串口读取称或是地磅数据
2011-04-08 14:53 Daniel Xu 阅读(7154) 评论(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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
浙公网安备 33010602011771号