泓格WINPAC主机与第三方模块rs 485 modbus rtu通信测试

开发语言:C#

开发环境:VS2008(支持WINCE开发的最后一个版本)

运行环境:Windows CE 5.0~7.0

项目说明:多台涨格winpac系列的主机,原来使用泓格SDK开发的程序,采集7018系列模块的数据,主要有7018R和7018Z。现客户要求增加一个温湿度模块,此模块支持rs485 modbus rtu通讯。

首先尝试使用SDK方法,可以读取7018模块的数据,却读不到温湿度模块的数据,代码如下:

void Main()
{
        var remoteIOPort = PACNET.UART.Open("COM2,9600");
        var cmd = Encoding.ASCII.GetBytes("#01\r");
        send(cmd, 0); //可以正常读取7018
        send(cmd, 1); //可以正常读取7018
        cmd = new byte[] { 0x65, 0x04, 0x00, 0x01, 0x00, 0x01, 0x68, 0x2E };
        send(cmd, 1);  //不能读取温湿度模块
}

        void send(byte[] cmd, int type)
        {
            if (type == 0)
            {
                float[] fValue = new float[10];
                var readResult = PACNET.PAC_IO.ReadAIAll(remoteIOPort, PACNET.PAC_IO.PAC_REMOTE_IO(1), fValue);
                foreach (var item in fValue)
                {
                    appendText(item);
                }
            }
            else if (type == 1)
            {
                var buffer = new byte[72];
                PACNET.UART.SendCmdExt(remoteIOPort, cmd, (uint)cmd.Length, buffer, (uint)buffer.Length);
                appendText(BitConverter.ToString(buffer));
            }
        }

直接读写串口,测试成功。代码如下:

using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;

namespace TESTSERIALPORT
{
    public partial class FrmSerialPort : Form
    {
        SerialPort serial;

        public FrmSerialPort()
        {
            InitializeComponent();
            serial = new SerialPort("COM2", 9600, Parity.None, 8, StopBits.One);
            serial.Open();
        }

        private void btnWrite_Click(object sender, EventArgs e)
        {
            serial.ReadTimeout = 1000;
            serial.WriteTimeout = 1000;
            if (!serial.IsOpen)
            {
                serial.Open();
                appendText(serial.PortName);
                appendText(serial.BaudRate);
                appendText(serial.Parity);
                appendText(serial.DataBits);
                appendText(serial.StopBits);
                appendText(serial.IsOpen);
            }

            var cmd = Encoding.ASCII.GetBytes("#01\r");
            send(cmd, 1);
            cmd = new byte[] { 0x65, 0x04, 0x00, 0x01, 0x00, 0x01, 0x68, 0x2E };
            send(cmd, 1);
            cmd = new byte[] { 0x65, 0x04, 0x00, 0x02, 0x00, 0x01, 0x98, 0x2E };
            send(cmd, 1);
        }

        void send(byte[] cmd, int type)
        {
            serial.Write(cmd, 0, cmd.Length);
            Thread.Sleep(300);
            var size = serial.BytesToRead;
            appendText(size);

            var buffer = new byte[size];
            var result = serial.Read(buffer, 0, size);
            if (type == 0)
            {
                appendText(PACNET.MISC.WideString(buffer));
            }
            else if (type == 1)
            {
                appendText(BitConverter.ToString(buffer));
            }
        }

        void appendText(object obj)
        {
            textBox1.Text += obj.ToString() + "\r\n";
        }
    }
}

原文地址:https://www.cnblogs.com/qq812256/p/12205209.html

时间: 2024-11-07 11:13:20

泓格WINPAC主机与第三方模块rs 485 modbus rtu通信测试的相关文章

python 常用第三方模块

除了内建的模块外,Python还有大量的第三方模块. 基本上,所有的第三方模块都会在https://pypi.python.org/pypi上注册,只要找到对应的模块名字,即可用pip安装. 本章介绍常用的第三方模块. 1. PIL PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,但API却非常简单易用. 由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillo

Python 第三方模块pythonnmap来实现高效的端口扫描

Python_Clamad 实现高效的端口扫描器pythonnmap Python的第三方模块pythonnmap来实现高效的端口扫描 python-nmap模块的安装方法如下: yum -y install nmap #安装nmap工具 pip install python-nmap #模块源码安装 ## https://pypi.python.org/pypi/python-nmap tar -zxvf python-nmap-0.1.4.tar.gz cd python-nmap-0.1.

python第三方模块精选

python不但有着强大丰富的"内置电池",同样的,第三方模块也是非常的多.目前收集了requests.paramiko.pymsql,以后会陆续添加: 一.requests Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务. 利用urllib发送GET请求: 1 2 3 4 5 import urllib.request f = urllib.

python 非root 用户安装第三方模块

利用非root用户安装第三方模块,同时打包常用的模块避免多机部署时重复安装.1.下载对应的软件包2.创建一个隐藏目录,用于存放软件包/data/home/user00/.python_package3.修改非root用户下.bash_profile 文件 PATH=$PATH:$HOME/.local/bin:$HOME/bin:/data/home/user00/.python_package/binexport PYTHONPATH=$PYTHONPATH:/data/home/user00

安装第三方模块

python安装第三方模块 方法1:使用软件管理工具(pip,pip2,pip3) python2和python3都自带了pip,而pip就仿佛有一个仓库,将我们需要安装的第三方模块都收纳其中,使用简 单的安装命令即可完成安装. 注意事项:用python3自带的pip或者pip3安装的第三方模块就只能为python3的编译器使用,这对于python2 的pip和pip2是同理的. 所以在我们需要对某一版本的python安装第三方模块的时候,就将原先的路径删除,增加对应的路径至环境变量. 个人推荐

[转] Python 常用第三方模块 及PIL介绍

原文地址 除了内建的模块外,Python还有大量的第三方模块. 基本上,所有的第三方模块都会在PyPI - the Python Package Index上注册,只要找到对应的模块名字,即可用pip安装. 本文介绍常用的第三方模块. 一个图像处理库PIL PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,但API却非常简单易用. 由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容

nginx第三方模块---nginx-sticky-module的使用(基于cookie的会话保持)

目前的项目网站架构中使用了F5和nginx,F5用来做负载均衡,nginx只用作反向代理服务器.最近应客户的要求准备去掉F5,使用软负载.大家都知道nginx抗并发能力强,又可以做负载均衡,而且使用nginx对我们目前的网站架构不会有大的变动,所以首选方案是nginx.但问题来了,nginx在会话保持这方面比较弱,用ip_hash做会话保持有很大的缺陷,它是通过客户端ip来实现,根据访问ip的hash结果分配请求到后端的app服务器,负载不会很均匀.之前在一个小项目前中使用过这种方法,已经得到验

cacti安装和第三方模块的导入

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具.Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数.它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构.host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善.界面友好.软件 Cacti 的发展是基于让 RRDTool 使用者更方便使用该软件,除了基本的 Snmp 流量

2如何安装Python第三方模块

如何安装Python第三方模块 Python官方为我们提供了第三方库,那么如何安装这些库呢? 安装第三方库有两种方式: 第一种就是使用python自带的仓库pip进安装 第二种就是使用源码进行安装 PIP方式安装 首先用yum安装python-pip软件包 [[email protected] ~]# yum  install python-pip 安装完成之后可以使用pip -V查看安装版本 [[email protected] ~]# pip -V pip 7.1.0 from /usr/l