温湿度设备开发总结
溫濕度設備是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 = Util.GetAppSettings("PortName");
??????????????? serialPort.BaudRate = int.Parse(Util.GetAppSettings("BaudRate"));
??????????????? //以下配置不需要進行手工配置 遵守 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;
??????????????? //開始地址為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;
?
轉載于:https://www.cnblogs.com/XiaoKiss/archive/2011/07/04/2097066.html
總結
- 上一篇: C++之类与对象(2)
- 下一篇: 取消选中目标CALL