行业动态

当前位置:首页>>新闻中心>>行业动态 发布时间:2017-06-13 04:44:44

溯源系统电子秤编程调试

时间:2017-06-13 04:44:44 来源:本站 点击数:751

蔬菜质量可追溯系统是一种采用C/SB/S混合模式的农产品质量追溯系统。该系统采用物联网技术对蔬菜种植 及加工过程中的所有生产数据、检疫数据、加工数据、销售数据进行记录,最终为生产过程控制、生产管理、食品溯源服务。 因此,可在对企业进行实地调研的基础上应用此方法开发一套蔬菜质量安全可追溯系统。文章主要研究了其中的电子秆数 据通信与同步发送模块的实现方法。

0.引言

蔬菜是我们日常生活中必不可少的食物之一,蔬菜质量是 否安全直接影响我们的健康。本文在调研蔬菜企业实际业务 流程的基础上,对蔬菜种植及加工过程中记录所有生产数据、 检疫数据、加工数据、销售数据等数据进行实时跟踪记录。

溯源系统的销售数据模块”中的蔬菜称重由串口电子秤 来完成,我们的需求是需要串口电子秤联人网络,蔬菜称重时, 电子秤通过串口返回数据给电脑,并将数据通过Socket发送 给网络上的服务器并记录下来。

实际上常用的电子秤与电脑交互采用两种方式。一种是 连续传送方式,电脑不用发送数据给电子秤,电子秤每隔一 段时间将重量发给电脑。还有一种是指令传输方式,在这 种情况下,电子秤只在输人指令的情况下,才会向电脑发送数 据。不过这种方式有个最大的缺点,在输人的指令错误的情 况下,不会返回任何信息。我们测试它的连续方式。下面先进行电子秤的设置。

1.电子秤设置

先通过调试说明设定波特率,程序中和机器中必须设置 一样的波特率才能正确地收发数据。其次设置通信协议”。 按照电子秤的说明进行配置,下面我们就进行配置。

1.1系统设置

开机进人称重状态,同时按数字键1”和总计, 进人设定状态。

屏幕显示“CLOSE”去皮键选择,“CLOSE” 关闭串口,“SER”为打开串口。按累清/设定键确认,进入下一步。

屏幕显示“B ****”,按去皮键选择波特率“累 清/设定键确认,进入下一步。

屏幕显示“P **”,按去皮键选择通讯协议“累 清/设定键确认并进入下一步。

1.2电子秆协议选择列表

本系统中的电子秤协议如表1所列。

标识1.jpg

1.3电子秆通讯协议数据格式

8位数据位,1位停止位,无校验位。我们选择系统默认 的协议D进行设计。字节1 (ASCII)=起始位,字节2?8 (ASCII):按先低后高的顺序发送6位重量数据,最后发送符 号位,其中表示负数,空格表示正数,不满8个数据则 用空格填满。

2.电脑串口设置

用鼠标右键单击我的电脑,在弹出的菜单中选择“属 性”,然后选择硬件备管理器”,在弹出的窗口数型目录 中选择“通信端口 (COM1)”弹出的窗口如图1所示。对“端 口参数”进行设置,一定要和自己所选取的电子秤匹配。波特 9 6008位数据位、1位停止位、无校验位,图1所示是 系统通信端口COM1)的属性设置界面。

标识2.jpg

3.程序设计

C/S 程序开发使用 Visual Studio 2010Visual Studio 2010可简化在各种平台上创建、调试和开发应用程序的过程, 是供开发人员执行基本开发任务的重要工具。它自带对测试驱 动开发的集成支持及调试工具,以帮助确保提供高质量的解 决方案。

3.1界面设计

本系统使用Visual Studio 2010中的SerialPort控件访问

串口。把电子秤配置好后,然后开始编程序。在项目中,电子 秤收发数据的子界面如图2所示,其主要任务就是把电子秤 称重时的重量信息实时地传递给窗体,在重量文本框中显示 出来。至于Socket在另外的模块来实现,这里不讨论。

标识3.jpg

3.2串口配置程序

本系统选择串口通信口为COM1设置串口通信波特率 9 600和电子秤,设置串口通信数据位,设置串口通信停止 1位,设置串口通信无校验。其重点程序如下:

Serialport_C.PortName = "COM1" Serialport_C.BaudRate = 9600

Serialport_C.DataBits = 8

Serialport_C. StopBits = System.IO.Ports. StopBits.One Serialport_C .Parity = Sy stem .IO.Ports. Parity.None

使用Visual Studio中的Serialport控件初始化,可设置

缓存并判断串口是否打开状态,如果没有打开则打开串口。程 序如下 

Serialport_C .ReadBufferSize = 1024 if (Serialport_C.IsOpen)

{

MessageBox.Show(  口已打开!”,“ 提示”, MessageBoxButtons.OK

MessageBoxIcon.Information)

}

else

{

Serialport_C.Open()

}

数据的读取与显示

接收缓冲读取全数据,设置OnComm事件的字节长度, 清空缓冲区,定时器启动。程序如下: Serialport_C.ReadExisting() Serialport_C.ReceivedBytesThreshold = 1 Serialport_C.DiscardInBuffer() timer1.Start()

串口数据的检测读取:就是从Serialport控件的缓存中读 取数据位,如果有数据,则读取数据并存人一个数据组中。 int bytes = Serialport_C.BytesToRead


byte[] buffer = new byte[bytes]if (bytes == 0)


{

return

}

Serialport_C .Read(buffer0bytes)

把取出数组中的数据转换为字符型数据并连接在一起准 备输出:

string srt = string.Empty string str = string.Empty

for (int Index = 0  Index < buffer.Length  Index++)

{

str += ((Char)(buffer[Index] )).ToString()

}

在程序界面上实现字符串的翻转显示:

String output = string.Empty for ( int i = str.Length  i > 1  i--)

{

output += str.Substring(i - 1 1)

}

textBox1.Text = output

}

4.结语

至此,就可以完成电子秤称重数据的动态读取了。在 测试过程中也不是一帆风顺的,首先电子秤和电脑串口的连接 要保证物理通路,在这个基础上才能进行下一步的工作;其 次要正确配置好电子秤,波特率要一定要保证一致;还要选 择适当的传输协议,如果这个不正确,后面的程序就不用写了 最后还要写出对应的读取程序。要正确对返回的ASCII码进 行解码,这样才能得到正确的结果,当然,这里只是针对电 子秤的调试和数据处理过程,网络中的Socket发送在另外模 块实现。