关于MScomm编程的一个问题
小弟用MScomm控件进行串口编程,现在要往一个设备上发一串字符串,然后马上接收响应的数据,大致程序框架应该是怎么样的啊?恳请各位大侠指点。
[解决办法]
写个函数发,用控件的事件接收数据就行了,这个有什么框架好说的
[解决办法]
//初始化串口控件参数
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);
}
////////////////////////////////////////////////////////////////////////