代码改变世界

串口读取称或是地磅数据

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细细的研究下吧。