救急:串口通讯问题

jandger 2005-05-16 11:34:43
我手中有块测量温度的仪表,要求显示仪表的温度,计算机发一条指令,仪表返回一条信息,其指令格式是:
“仪表地址”+“仪表地址”+“读指令代码/写指令代码”+“参数代号”+“读:0/写:所写值的低字节”+“读:0/写:所写值的高字节”+“效验和低字节”+“校验和高字节”。
我编写了一段程序,可是得不到回应,哪位大虾帮小弟一把。
程序如下:
DynamicArray<byte> ByteBuf,ByteRec;
ByteBuf.Length=8;
ByteBuf[0]=129;
ByteBuf[1]=129;
ByteBuf[2]=67;
ByteBuf[3]=0;
ByteBuf[4]=232;
ByteBuf[5]=3;
ByteBuf[6]=44;
ByteBuf[7]=4;
Comm1->OutputByte(ByteBuf);
Delay(200);
ByteRec=Comm1->ReadInputByte();
for(int i=0;i<ByteRec.Length;i++)
Memo1->Text=Memo1->Text+IntToStr(ByteRec[i]);

...全文
174 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cauluocb 2005-05-17
  • 打赏
  • 举报
回复
1、用串口助手向仪器发送指令,发送指令的正确性和COM口的系列参数设置是否正确(如波特率、校验位等)。
2、查看串口助手接收到的仪器反馈信息,确认反馈信息的字节数及格式
3、设置COM的接收缓存和仪器反馈信息的大小一致
4、1-3步做好了就可以动手写代码了,如果写代码仔细一点一般都不用再做调试就能通讯了
(^_^)
cfstock 2005-05-17
  • 打赏
  • 举报
回复
调试串口程序,需要做一条交叉连线,两机对发或者COM1/2对着收发
估计你的串口程序有问题
再者考虑上位机与设备之间的通讯协议是否一致。
wangxiangsjz 2005-05-17
  • 打赏
  • 举报
回复
SPComm控件,我有例子。wangxiangsjz@sina.com
qrlvls 2005-05-16
  • 打赏
  • 举报
回复
用串口调试器发数据来测试
cczlp 2005-05-16
  • 打赏
  • 举报
回复
下载PortMon监视一个就知道你发送的是否正确。
leonatcs 2005-05-16
  • 打赏
  • 举报
回复
1.仪表的指令是二进制还是ascii,仪表可能根本没有正确收到你发的指令。
2.等待的时间是否太短,仪表还没来得及反应。
3.波特率,校验位等是否设置的和仪表要求的一致。

建议你使用控件,效率高。
mscomm
或Apro这个强大!
clong320 2005-05-16
  • 打赏
  • 举报
回复
你用的是什么控件?建议用Victor的串口控件。http://www.cppfans.com/中可以下载。
土著巫师 2005-05-16
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3921/3921859.xml?temp=.5881311
http://community.csdn.net/Expert/topic/3930/3930095.xml?temp=.5266687
我不懂电脑 2005-05-16
  • 打赏
  • 举报
回复
mscomm
很好用。

1,317

社区成员

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

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