特急,有关串口编程,请高手进来!(13分)

  • 主题发起人 主题发起人 lovewjm
  • 开始时间 开始时间
L

lovewjm

Unregistered / Unconfirmed
GUEST, unregistred user!
公司买了一个磅称,用串口连接电脑,供应商提供的通迅协议如下:1,连续发送称重值,2,数据格式:每发送一次数据为5帧,每帧数据有 11位,1位起始位,8位数据位,2位停止位.第一帧表示offh开始.第二帧表示小数点位置,称重稳定等,第三,四,五帧表示由高到低的称重的bcd码.我以前用mscomm控件编程比较简单,这个通迅协议能不能用这个控件编程?因为这个控件的input,属性就表示,接收缓冲区的内容.这里每发送一次就有5帧,那么串口接收缓冲区内接收的数据是不是也有5帧,该怎么编这个程序?请高手指点一二!!!多谢,!!!急!!!
 
可以阿,把数据接收了然后再分析
 
不好意思,楼上兄弟,能不能说详细一点啊,我以前为公司编另一台磅称时,是一个字符一个字符的接收,将RThreshold设为1,这样接收每一个字符,就触发comevreceive事件,来读取接收缓冲区的内容,并且直接就可以显示,但现在这个协议,是一帧,并且一次发送五帧,这个该怎么读,并且发送的重量是bcd码,当然这个可以转换成十进制,但我怎么来从串口读取这个bcd码,五帧当中,我怎样确定这一帧是重量值?
 
用超级终端获取一下数据格试再做分析!
 
还是自己编程的好,有哪位高手能帮我分析一下?
 
其实,很简单的,你按以前的做法,等把5帧都接受了,在做处理,因为每帧都有起始为和停止位
 
怎样确定五帧都接受了?起始帧标志是OFFH,各位兄弟能不能说详细一点?他发送的数据格式肯定不是字符型,是bcd码
 
无论是苹果还是Apple
本质是相同的
明白吗
到了最底层,但是8个二进制位组成的字节
 
发送的是8位bcd码,怎么转换?
 
我把所有的分都贡献出来了,怎么没有分啊?刚才谁发信息了?能不能麻烦这位老兄回答一下啊
 
都是二进制码,5帧,每帧数据有 11B,你一次读取5×11B就可以全部读出来了啊,你所说的位如果是字节的话
 
现在关键是怎么读出后面的数字了,后面三帧表示称重数据.是BCD码,据我所知,一般情况下,BCD码需四位表示一个10进制数,一帧才8位,难道只能表示2个数字?他是怎么表示这个数字的?还请多指点!!!问供应商他们也不知道,哎,各位大师再指点一下!!
他们怎么不直接用二进制表示或字符表示还好啊,靠
 
很多设备都是使用BCD码的
你先找个串口精灵之类的观查一下数据
分析一下
一个字符一个字符的接收
收到一个0xFf后,依接收4个字符
然后解析
 
BCD码 (二 ─ 十进制码)
在一些数字系统中,如电子计算机和数字式仪器中,往往采用二进制码表示十进制数。通常,把用一组四位二进制码来表示一位十进制数的编码方法称作二─十进制码,亦称BCD码(Binary Code Decimal)。
4位二进制码共有16种组合,可从中任取10种组合来表示0~9这10个数。根据不同的选取方法,可以编制出很多种BCD码,如8421码,5421码,2421码,5211码和余3码。表Z1101列出了这几种BCD码,其中的8421 BCD码最为常用。
由于每一组4位二进制码只代表一位十进制数,因而n位十进制数就得用n组4位二进制码表示。

例1110 把十进制数369.74编成8421 BCD码。
解:

                      表Z1101 常用BCD编码表
8421码 5421码 2421码 5211码 余3码
0 0000 0000 0000 0000 0000
1 0001 0001 0001 0001 0100
2 0010 0010 0010 0100 0101
3 0011 0011 0011 0101 0110
4 0100 0100 0100 0111 0111
5 0101 1000 0101 1000 1000
6 0110 1001 0110 1001 1001
7 0111 1010 0111 1100 1010
8 1000 1011 1110 1101 1011
9 1001 1100 1111 1111 1100
权 8421 5421 2421 5211
 
你用DELPHI的话,可能用SPCOMM,其实我觉得SPCOMM比MSCOMM好用多了。。
 
接受答案了.
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部