读书人

关于MSComm的OleVariant类型转换,该如

发布时间: 2012-03-01 10:25:46 作者: rapoo

关于MSComm的OleVariant类型转换
请教各位大侠一个问题,小弟第一次用MSComm控件编程,遇到这样的问题:
发送数据时Output的类型要是OleVariant,如何把字符数组类型的转换过来?网上看到的几个方法都不管用。

[解决办法]

C/C++ code
//初始化串口控件参数        MSComm1->CommPort=1;//默认为com1口        MSComm1->OutBufferSize=1024;//输出缓冲区大小        MSComm1->InBufferSize=1024;//输入缓冲区大小        MSComm1->InputMode=1;//数据接收模式为二进制模式        MSComm1->Settings="4800,n,8,1";//设置参数,默认为:波特率4800;无校验;数据位8;停止位1        //打开串口        try        {                if(MSComm1->PortOpen)                        return;                MSComm1->PortOpen=true;        }        catch(...)        {                MessageBox(NULL,"串口打开失败,请检查!","错误",MB_OK + MB_ICONERROR);        }        //关闭串口        try        {                if(MSComm1->PortOpen)                        MSComm1->PortOpen=false;        }        catch(...)        {                MessageBox(NULL,"串口关闭失败,请检查!","错误",MB_OK + MB_ICONERROR);        }//发送接收缓冲区定义BYTE sendBuff[4];//发送命令数据缓冲区,大小根据实际情况而定BYTE recvBuff[4];//返回命令数据缓冲区,大小根据实际情况而定OleVariant   ovSendBuf;//万能变量OleVariant   ovRecvBuf;//万能变量        //发送数据///////////////////////////////////////////////////////////////        sendBuff...填充数据,可以采用内存拷贝的方式完成memcpy        ovSendBuf=VarArrayCreate(OPENARRAY(int,(0,3)),varByte);//开辟万能变量数组空间        for(i=0;i<4;i++)//将发送数据填充入万能数组        {                ovSendBuf.PutElement(sendBuff[i],i);        }        MSComm1->Output=ovSendBuf;        ////////////////////////////////////////////////////////////////////////        //接收数据///////////////////////////////////////////////////////////////        ovRecvBuf=MSComm1->Input;        for(i=0;i<4;i++)//从万能数组中提取接收数据到缓冲区        {                recvBuff[i]=ovRecvBuf.GetElement(i);        }//////////////////////////////////////////////////////////////////////// 

读书人网 >C++ Builder

热点推荐