温湿度设备开发总结

 

 温湿度设备是S200HT型号,基于RS-485通信接口,报文格式如下:

发送例文:01 03 00 03 00 24 34 0b

接受例文:01 03 04 01 3b 02 d3 ca ff

 

温度值计算:0x013b/10=315/10=31.5(℃);

湿度值计算:0x02d3/10=723/10=72.3%.

 

思路:使用.net的串口进行开发,但是在这之前使用google进行查询是否有现成的代码或者类库。

 

使用.net串口进行开发,模拟相应的发送报文,在标签为2的时候可以成功发送,并接受到相应的报文,但是按照计算,结果不正确。

使用NModbus类库,进行多次测试和应用,结果正确。

总结:第一,遇到问题的首要是不要慌张,告诉自己一定能解决,结果就是能解决的。第二,多使用类库或者别人的经验,这样做的原因主要能快速解决问题,当然如果是学习,可以自己来写,但是工作呢还是快速结束为好,毕竟公司需要你多产出。第三,多思考,结合整体来进行思考。报文的传输,二进制数据传输,如何解析等等。第四,做项目并不是所有的问题都要解决才开始动手,先将大致的框架搭好,然后逐步解决程序中的各个问题,遇到花1-2小时不能解决或者解决无望的情况下,赶紧跳过,进行下一个功能点的开发,将最复杂的放到后面,这样进度就不会受到影响。

 

以下是核心代码:

using (SerialPort serialPort = new SerialPort())

            {

                serialPort.PortName = "COM1";

                serialPort.BaudRate = 9600;

                //以下配置不需要进行手工配置 遵守 RS-485通信协议

                serialPort.Parity = Parity.None;

                serialPort.StopBits = StopBits.One;

                serialPort.DataBits = 8;

                serialPort.Open();

 

                // create Modbus RTU Master by the comport client

                //document->Modbus.Device.Namespace->ModbusSerialMaster Class->CreateRtu Method

                ModbusSerialMaster master = ModbusSerialMaster.CreateRtu(serialPort);

 

                // read the input register 0~9 (30001~300010) of the device slave ID 1

                //document->Modbus.Device.Namespace->ModbusMaster Class->ReadInputRegisters Method

               byte slaveID = 1;//标签ID

                //开始地址为0

                ushort startAddress = 0;

                ushort numOfPoints = 9;

                master.Transport.ReadTimeout = 300;

                try

                {

                    ushort[] register = master.ReadHoldingRegisters(slaveID, startAddress, numOfPoints);

 

                    float temperatureValue = Convert.ToSingle(register[3]) / 10;

                    float humidityValue = Convert.ToSingle(register[4]) / 10;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值