串口读取称或是地磅数据
2011-04-08 14:53 Daniel Xu 阅读(6654) 评论(0) 编辑 收藏 举报论坛里经常碰到称或是地磅对接的问题,想当年我也是一路问过来啊,自动一人在客户那磨练下就知道怎么做的了,今天总结下吧。我接触的称或是地磅都是串口输出数据,貌似都是串口输出(可能有别的我没接触到的)。
1、利用串口调试助手接收数据
首先我们来了解称是怎么把数据传输出来的,一般情况称传出模式有2中,
模式一是连续发送,换句话说就是一直向外发数据,接收到数据后按照协议规则剥离出你要的数据就可以。
模式二种是应答式,就是按照协议格式发送一组字符串或是16进制字符串,称提给你回应,按照规则你剥离出你要的数据就可以了。
知道称数据发送方式了,那下步我们要知道怎么去接受传输过来的数据,
我用一个比喻来形容下:引水灌溉,水库的水引到庄稼地浇灌
水库的水外放,肯定有规则的,浇灌多少地,水流量多大,传输多远,对于水库的管理者都有规定,这好比称厂家的协议。
对于庄稼户,要用水,肯定要修渠道,渠道是多宽合适,这个根据水库管理者的建议,这个好比对照称称厂家的协议。
例子只是一个例子不算很得当,希望阅读者能够理解。
哪些是要设置的协议呢:串口号,波特率,校验位,数据位,停止位。
串口号:本机要接收数据的串口号;波特率,校验位,数据库,停止位,这些都是有厂家来给你提供的,只要按照他们给的标准设置就可以了,如下图
当然还有重要的一点一定要把称和电脑连接上,一般选择屏蔽线作为传输介质。如果没有问题就可以接收到数据了(连续发送模式)。
2、程序接收数据
想必通过上面的说明你应该了解怎么接收数据了,自己写程序接收数据,道理一样的,
1、程序加载后把对应的串口,波特率,校验位,停止位设置正确
mycom1.PortNum=iPort; mycom1.BaudRate=iRate; mycom1.ByteSize=bSize; mycom1.Parity=bParity; mycom1.StopBits=bStopBits; mycom1.ReadTimeout=iTimeout; if(this.OpenCom()) msg.AppendText("串口初始化成功……"); else msg.AppendText("串口初始化失败!");
2、打开串口,接收发过来的数据
//开串口 public bool OpenCom() { try { if (mycom1.Opened) { mycom1.Close(); mycom1.Open(); //打开串口 } else { mycom1.Open();//打开串口 } return true; } catch(Exception e) { MessageBox.Show("错误:" + e.Message); return false; } }
接收数据
public string dis_package(byte[] reb) { string temp=""; foreach(byte b in reb) temp+=b.ToString("X2")+" "; return temp; }
数据怎么处理看你的需求了
在次声明下,我用到基础函数是这个博主写的http://www.cnblogs.com/tuyile006/archive/2006/09/29/517882.html,关于串口的一个demo
如果你还不知道怎么做,去下个demo细细的研究下吧。
作者:DanielXu
出处:http://www.cnblogs.com/lovetsfuer/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。