MSCOMM控件做串口通信程序,发送数据的格式怎么去定义啊

zhangchuang   2010-5-4 09:15 楼主
请教个问题:我做应用程序的,使用MSCOMM控件做了一个串口通信程序(VB),用串口调试程序测试接受和发送数据都没有问题,现在同事要在硬件那边发送数据,他用汇编,现在他说我的程序有问题,发送格式不对,说要按他的格式发送:即先发一个0X10作为帧头,然后再是数据,最后0X16做帧尾!对硬件我不怎么懂,所以有点迷惑了,在MScomm控件中怎么去做才能和他对应起来啊

回复评论 (11)

自己组包发送就可以了。
点赞  2010-5-4 15:23
引用: 引用 1 楼 luixing67 的回复:
自己组包发送就可以了。

怎么组包啊,直接用MSComm控件就可以设置吗?
点赞  2010-5-4 16:08
自己顶一个,希望有高手能指点一下
点赞  2010-5-5 09:06
自己用个BUFFER,把你要发送的数据格式组包放进BUFFER里,再把BUFFER用MSCOMM发送出去
点赞  2010-5-5 09:19
简单的说,就是数组
点赞  2010-5-5 09:20
提示: 作者被禁止或删除 内容自动屏蔽
点赞  2010-5-5 09:48
是的。
点赞  2010-5-5 10:25
你发送出去的数据
需要是十六进制数据
不能够是ASCII码
声明一个缓冲区
把要发送的十六进制数据存储在里面
0x10包头,0x16包尾
你先用PC串口调试助手测试一下
自收发也行
看看你发送出去的东西
到底是不是0x10开头,0x16结尾的
如果不是
你同事那边的汇编程序肯定是不行的
其实是比较简单的
点赞  2010-5-5 10:29
以上各位说的很详细了
点赞  2010-5-5 13:18
建议都用16进制通讯,

通讯协议可以你们协商,

商量一个你能做到的协议不就ok,
点赞  2010-5-5 13:25
OK,搞定了,结贴

  1.                 string s = ((Button)sender).Text;
  2.                 byte[] b=new byte[6];
  3.                 b[0] = 0x10;
  4.                 b[1] = 0x80;
  5.                 b[2] = byte.Parse(s);
  6.                 b[3] = 0x00;
  7.                 int a = 128 + int.Parse(s);
  8.                 b[4] = byte.Parse((a%256).ToString());
  9.                 b[5] = 0x16;

  10.                 this.serialPort1.Write(b, 0, 6);
点赞  2010-5-5 15:36
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复