1,317
社区成员
发帖
与我相关
我的任务
分享//初始化串口控件参数
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);
}
////////////////////////////////////////////////////////////////////////