MSCOMM控件如何传递整数?

wqzq2020 2007-07-21 06:51:58
我设置了一个整数数组,请问用MSCOMM如何把它传到串口?
...全文
193 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wz 2007-07-21
  • 打赏
  • 举报
回复
marker
i_love_pc 2007-07-21
  • 打赏
  • 举报
回复
//初始化串口控件参数
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);
}
////////////////////////////////////////////////////////////////////////
constantine 2007-07-21
  • 打赏
  • 举报
回复
赋值给Output,不过需要将你的数组放到一个OleVariant;变量里面去才能赋值

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧