精华内容
下载资源
问答
  • 项目改造,客户需要对IFix4.5进行升级,并优化通讯,在不改变原来配置基础上逐步进行替换。需要将IFix升级到IFix5.9,数据库升级为SQL Server 2016,客户...因此我们为客户提出使用串口服务器,进行串口虚拟化方...

    项目改造,客户需要对IFix4.5进行升级,并优化通讯,在不改变原来配置的基础上逐步进行替换。

    需要将IFix升级到IFix5.9,数据库升级为SQL Server 2016,客户现场使用的智能仪表都是支持Modbus RTU协议的,因原来的手拉手的通讯方式的,当一台仪表掉线后,会影响到其他仪表的通讯,所以此次在不改变原有的组态基础上进行通讯优化。因此我们为客户提出使用串口服务器,进行串口虚拟化的方式实现,同时也可以使用TCP/IP协议进行数据访问的更加高效的通讯提供的升级可能性。

    此次使用的串口服务器是MOXA的NPort5630,它可以将16个串口设备连接至以太网,19寸机架安装方式,同时通过在Windows系统中安装Real COM驱动程序,可以将NPort5630映射为Real COM串口。除了支持基本的数据传输之外,NPort驱动程序还支持RTS,CTS,DTR,DSR,和DCD控制信号。

    bc542f8ba9866baf689963980e1fe619.png

    下面将说明NPort5630如何进行配置:

    1. 打开浏览器,输入Nport 5630的IP地址,可以上电后在LCD屏幕上看到,默认为:192.168.127.254,打开如下界面,输入username:admin,Password:moxa,然后点击Login。

    769d8c3388652204ab74c2629276b205.png

    2. 点击Login后登录,弹出切换到如下画面,点击"Continue"

    e8818770caeefdfb368168f7a7776126.png

    3. 点击"Continue"后,切换到如下画面,用户可以选择是否修改密码,"Old password"输入旧密码:moxa,然后在"New password"输入新的密码,在"Retype password"再次输入新密码,修改好新的密码后点击"Submit";或者在不需要修改密码时,可以选择"Skip"。

    e3d3ee8c857f1b9333fd04a4189c497e.png

    4. 在左侧栏中点击"Upgrade Firmware"可以进行固件更新

    9017b3369005ed27e6d69ac7e2f8c866.png

    5. 然后再此画面中点击"Browse",在硬盘上找到最新的固件存储位置,然后选择,目前最新的为V3.9版本。固件被选择后,点击"Submit"进行固件更新,固件更新过程中需要特别注意:不能断电。完成更新后,刷新浏览器,重新登录。

    9b6a5da93209508bd56de7f0081ea68e.png

    6. 在左侧点击"Basic settings",可以重新设置"Server Name","Time zone","Time",其他请选择默认,不需要修改。

    6d334f84db07c0ec16d3aa6cdb1636ea.png

    7. 在左侧点击"Network settings",需要重新设置"IP address",其他请选择默认,不需要修改。

    03ada294facfd400bbe61459c0c1c562.png

    8. 打开NPort Administrator软件,点击"Search",查找在线的串口服务器。

    45370a1873b5b2351d8296834b9253c0.png

    9. 搜索到在线的串口服务器后,选择其中一台,右键,选择"Unlock"

    568c33ba11f79cd25c13aea4e5cf99d1.png

    10. 在弹出的对话框"User Name"和"Password"输入用户名和密码,然后点击"OK"

    1c68cd1cd90faa6f034202fe613a1c5d.png

    11. 在如下图中,已经查找到了在线的串口服务器,选择需要进行参数设置的一台,然后点击"Configure",在弹出的画面中,选择"Serial"进行串口参数设置,进行参数设置需要勾选"Modfiy",然后再下面的框中选择其中需要修改参数的Port口,该串口服务器共有16个口,然后选择"Settings"。

    83636761cfd996a5999088a32f134440.png

    12. 再设置画面需要根据现场实际情况设置波特率"Baud Rate",一般为:9600; 奇偶校验位"Parity",一般默认为"None",目前测试为"Odd",状态位"Data Bits"和停止位"Stop Bits"一般为默认值,流控"Flow Control"设置为"None","FIFO"选择默认,"Interface"选择默认,也可以根据现场实际情况选择其他。设置完成后,点击"OK"。

    482ded977dd6fa5376ca66ae469665f5.png

    13. 打开NPort Windows Driver Manager 软件,进行串口虚拟,点击"Add",再弹出的画面中点击"Search",当完成所有在线串口服务器的搜索后,会在列表中显示所有的串口服务器设备。

    797db7f3f1155785b30209688319ebea.png

    14. 在如下图中勾选一台或者多台设备的复选框,然后点击"OK",软件开始虚拟串口,分配不同的串口号。

    cf163904a35154bfba6c7e6b91499fe1.png

    15. 完成串口虚拟后,在如下画面中将显示所有已虚拟号的串口,如下图中IP地址为"192.16.10.7"对应的16个串口,最后一列显示为Port1---Port16,每个端口对应不同的串口号"Com Port",此处的"Com Port"即为虚拟的串口。

    选择其中一行,进行对应串口服务器Port口通讯参数设置,选择后点击"Setting",弹出设置对话框,选择"Advanced Settings",将"The FIFO settings will overwrite the fireware setting Tx Mode "修改为"Classical"。其他设置为默认。然后点击"OK",将所有在用的端口全部设置完成后,在主画面的COM Port列中可以看到已经设置参数的COM口后面有一个星号"*",此时需要将已完成的设置应用到串口服务器中,点击"Apply"进行参数应用,等待完成。在弹出的对话框中依此进行确认。选择"Yes"和"OK"。

    d2fe203aee26549c906bb39a9110e858.png
    cac198d0f81e907b5c9091275fca9b87.png
    6d618e8bcc0422e5c1ab74065bee9dab.png
    1ce81914aa2aa491c197c2d813c2a534.png
    1e54af901bec1fecb2ed8eb01bc5bd74.png

    完成以上所有配置后,可以使用ModScan软件进行测试,确认是否配置成功。关于ModScan的使用请在以前的文章中查找。

    f6d2f5adc4354446ac82d464a3aa847f.png

    如上图所示,可以通过串口服务器实现任何一种通讯,Modbus TCP或者Modbus RTU.

    关于IFix的MB1驱动和MBE驱动配置问题,请随时关注文章更新。

    展开全文
  • linux USB虚拟串口设备名的修改

    千次阅读 2015-08-21 19:58:31
    等设备,但是这样就有一个问题了,例如我有多个USB的口,要接多种不同USB转串口设备,那么我插上USB的顺序不同,那同一个设备注册的设备名就不同了,这样就造成在APP中调用的USB的设备名变化的,这样就增加了APP开发...
        在LINUX 中,会经常用到USB转串口的设备。而LINUX中通用的做法是根据插入USB设备的先后顺序依次注册ttyUSB0\1\2\3..等设备,但是这样就有一个问题了,例如我有多个USB的口,要接多种不同USB转串口设备,那么我插上USB的顺序不同,那同一个设备注册的设备名就不同了,这样就造成在APP中调用的USB的设备名变化的,这样就增加了APP开发的难度。那么可不可把不同的设备注册的串口号固定下来呢?
        在linux的USB转串口的驱动中,定义了一个serial_table的指针数组,这个数组保存每一个注册的USB串口设备。当USB插上时,usb_serial_probe会被执行,这个函数会调用get_free_serial。在get_free_serial中,会遍历整个数组,寻找第一个没有被赋值的单元,将设备的usb_serial结构的地址保存的这个单元,同时将该数组元素的下标赋值给usb_serial结构中port[N]的number(一个USB设备可以有多个PORT),而这个number就是最后注册的设备名ttyUSB0\1\2\3..后面的数字。
        那么是不是我们可以给每一个设备指定一个开始的number号,那么不论先后顺序设备名都可以固定了。
        下面还有一个问题,就是怎么在get_free_serial中判断是什么设备呢?这个LINUX已经给我们准备好了,就是description,我们只要比较description和我们要指定的设备是否相同就好了。这个保存在usb_serial结构的type->description下,这个description我们是定义在设备驱动的usb_serial_driver结构的description。如果没有定义description,那么将用usb_serial_driver结构中的driver->name作为description。
         有了上面的知识,我们的工作就很简单了只要在get_free_serial的开头加上下面的代码,就大功告成了。
         if(memcmp(serial->type->description,"dev name ",6) ==0)
         {
                 i=_DEF_NUMBER;
          }
       else
         {
                  i=0;
          }
    展开全文
  • ubuntu 为USB串口绑定固定的设备名

    千次阅读 2019-03-17 16:07:24
    为 USB设备绑定固定的设备名 最近,研究下了如何在linux绑定串口号,不然每次插拔后串口号可能变,就特别麻烦. 在csdn上参考了一些博客发现了两种方式,但都有各自的弊端. 1. 串口信息查询 查看有哪些串口 python -m ...

    参考
    下固定USB串口设备号(防止设备重复挂载、保证对外接设备信息稳定读取)
    linux下多个usb设备固定名称方法
    为 USB设备绑定固定的设备名

    最近,研究下了如何在linux绑定串口号,不然每次插拔后串口号可能变,就特别麻烦.
    在csdn上参考了一些博客发现了两种方式,但都有各自的弊端.

    1. 串口信息查询

    查看有哪些串口

    python -m serial.tools.list_ports 
    

    查看串口信息,测试了发现没有USB串口独立的特征信息, 唯一一个不变的3-3:1.0, 而这个实际上是代表电脑上这个USB口编号,也就是说只是连在这个USB端口上的串口都叫这个ID.

    udevadm info /dev/ttyUSB0
    

    在这里插入图片描述

    2. 创建配置文件

    创建规则, 文件名称随意.其中配置文件有两种方式,各有缺点

    2.1 绑定USB端口号

    sudo vi /etc/udev/rules.d/com_port.rules
    

    内容, KERNELS表示硬件的usb接口名,不同编号,表示不同的usb接口.
    下面是添加修改了三个USB端口

    ACTION=="add",KERNELS=="1-1.2:1.0",SUBSYSTEMS=="usb",MODE:="0777",SYMLINK+="imu"
    ACTION=="add",KERNELS=="3-3:1.0",SUBSYSTEMS=="usb",MODE:="0777",SYMLINK+="lidar"
    ACTION=="add",KERNELS=="3-2:1.0",SUBSYSTEMS=="usb",MODE:="0777",SYMLINK+="my_serial3"
    
    

    查看变换后的情况

    ll /dev | grep ttyUSB
    

    在这里插入图片描述
    缺点: 只要是插到这个USB端口的串口都会被改为指定名.

    2.2 绑定USB串口号

    查看设备ID

    lsusb
    

    在这里插入图片描述
    例如第四行的那个ID 10c4:ea60表示TTRS{idVendor}==10c4, ATTRS{idProduct}==ea60

    sudo vi /etc/udev/rules.d/com_port.rules
    

    内容, KERNELS表示硬件的usb主分类,.
    下面是添加修改了两个个USB端口

    KERNEL==”ttyUSB*”, ATTRS{idVendor}==”10c4”, ATTRS{idProduct}==”ea60”, MODE:=”0666”, SYMLINK+=”lidar”
    KERNEL==”ttyUSB*”, ATTRS{idVendor}==”1a86”, ATTRS{idProduct}==”7523”, MODE:=”0666”, SYMLINK+=”base”
    

    缺点: 当两个串口芯片相同时会出现ID完全相同的情况, 例如上图的两个串口芯片都为
    Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
    ID也都为10c4:ea60.

    展开全文
  • C# 获取设备管理器完整的串口名

    千次阅读 2018-12-05 21:19:32
    分享一个很好用的串口类,可以直接获取设备管理器中,串口的名字,在网上找可以直接是使用,但是使用了一段时间,发现在不同电脑会出现一定问题,概率挺大,会抛出异常,于是优化了一下。 到目前为止,再也...

     分享一个很好用的串口类,可以直接获取设备管理器中,串口的名字,在网上找的可以直接是使用,但是使用了一段时间,发现在不同的电脑会出现一定的问题,概率挺大的,会抛出异常,于是优化了一下。

    到目前为止,再也没有有客户发现有问题。

      class SerialProtFindHelper
        {
            /// <summary>
            /// 枚举win32 api
            /// </summary>
            private enum HardwareEnum
            {
                // 硬件
                Win32_Processor, // CPU 处理器
                Win32_PhysicalMemory, // 物理内存条
                Win32_Keyboard, // 键盘
                Win32_PointingDevice, // 点输入设备,包括鼠标。
                Win32_FloppyDrive, // 软盘驱动器
                Win32_DiskDrive, // 硬盘驱动器
                Win32_CDROMDrive, // 光盘驱动器
                Win32_BaseBoard, // 主板
                Win32_BIOS, // BIOS 芯片
                Win32_ParallelPort, // 并口
                Win32_SerialPort, // 串口
                Win32_SerialPortConfiguration, // 串口配置
                Win32_SoundDevice, // 多媒体设置,一般指声卡。
                Win32_SystemSlot, // 主板插槽 (ISA & PCI & AGP)
                Win32_USBController, // USB 控制器
                Win32_NetworkAdapter, // 网络适配器
                Win32_NetworkAdapterConfiguration, // 网络适配器设置
                Win32_Printer, // 打印机
                Win32_PrinterConfiguration, // 打印机设置
                Win32_PrintJob, // 打印机任务
                Win32_TCPIPPrinterPort, // 打印机端口
                Win32_POTSModem, // MODEM
                Win32_POTSModemToSerialPort, // MODEM 端口
                Win32_DesktopMonitor, // 显示器
                Win32_DisplayConfiguration, // 显卡
                Win32_DisplayControllerConfiguration, // 显卡设置
                Win32_VideoController, // 显卡细节。
                Win32_VideoSettings, // 显卡支持的显示模式。
    
                // 操作系统
                Win32_TimeZone, // 时区
                Win32_SystemDriver, // 驱动程序
                Win32_DiskPartition, // 磁盘分区
                Win32_LogicalDisk, // 逻辑磁盘
                Win32_LogicalDiskToPartition, // 逻辑磁盘所在分区及始末位置。
                Win32_LogicalMemoryConfiguration, // 逻辑内存配置
                Win32_PageFile, // 系统页文件信息
                Win32_PageFileSetting, // 页文件设置
                Win32_BootConfiguration, // 系统启动配置
                Win32_ComputerSystem, // 计算机信息简要
                Win32_OperatingSystem, // 操作系统信息
                Win32_StartupCommand, // 系统自动启动程序
                Win32_Service, // 系统安装的服务
                Win32_Group, // 系统管理组
                Win32_GroupUser, // 系统组帐号
                Win32_UserAccount, // 用户帐号
                Win32_Process, // 系统进程
                Win32_Thread, // 系统线程
                Win32_Share, // 共享
                Win32_NetworkClient, // 已安装的网络客户端
                Win32_NetworkProtocol, // 已安装的网络协议
                Win32_PnPEntity,//all device
            }
            /// <summary>
            /// WMI取硬件信息
            /// </summary>
            /// <param name="hardType"></param>
            /// <param name="propKey"></param>
            /// <returns></returns>
            private static string[] MulGetHardwareInfo(HardwareEnum hardType, string propKey)
            {
                List<string> strs = new List<string>();
                try
                {
                    using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from " + hardType))
                    {
                        var hardInfos = searcher.Get();
                        foreach (var hardInfo in hardInfos)
                        {
                            if (hardInfo.Properties[propKey].Value != null && hardInfo.Properties[propKey].Value.ToString().Contains("COM"))
                            {
                                strs.Add(hardInfo.Properties[propKey].Value.ToString());
                            }
    
                        }
                        searcher.Dispose();
                    }
    
                    return strs.ToArray();
                }
                catch
                {
                    return strs.ToArray();
                }
            }
    
            /// <summary>
            /// 串口信息
            /// </summary>
            /// <returns></returns>
            public static string[] GetSerialPort()
            {
                return MulGetHardwareInfo(HardwareEnum.Win32_PnPEntity, "Name");
            }
        }

     

    展开全文
  • 以USB转串口设备为例,通常设备节点为ttyUSBx(x为0~n),Linux内核会根据设备插入的先后顺序进行编号的分配,比如第一个插入的设备编号为ttyUSB0,然后依此加1,变为ttyUSB1,ttyUSB2…… 如果仅仅以设备节点...
  • 通过作为服务器端,提供RS-232/485/422终端串口与TCP/IP网络数据双向透明传输,提供串口转网络功能,RS-232/485/422转网络解决方案,可以让串口设备立即联接网络。接下来我们就来为大家详细介绍下什么是串口转换...
  • 分享一个很好用的串口类,可以直接获取设备管理器中,串口的名字,在网上找可以直接是使用,但是使用了一段时间,发现在不同电脑会出现一定问题,概率挺大,会抛出异常,于是优化了一下。 到目前为止,再也...
  • 绑定串口设备

    2016-12-21 13:07:00
    假定共有20个串口1,每个串口的设备名是 Serial数字 定义2个有20个设备对象指针的数组,一个保存绑定设备,一个保存被绑定设备 循环对20个设备对象进行open,然后创建设备对象并将其绑定到open后的设备对象所在的设备...
  • 昨天学习了Ubuntu 串口号固定 作用: 为什么需要固定串口号呢?因为在ROS中要读取外设数据,通过...查看串口信息:在终端输入lsusb命令查看,第一张图显示了4个串口设备,那么到底哪一个是我们想要固定串口号...
  • RegEnumValue 枚举注册表只能获得COM1..2..这样名.不能获得设备名, SetupDiGetDeviceRegistryProperty 这个函数能获得设亩名.却不能得到类似COM1这样...问下有什么方法可以一次性得到串口名和设备名这2个名字.?谢谢
  • 串口问题(多USB设备串口名固定)

    千次阅读 2018-12-04 19:30:20
    串口问题: lsusb 查看物理设备号 dmesg etc/udev/rules.d 运行tree /dev或ls -lR /dev找到您的设备
  • 一、问题重述 ...linux下的usb转串口驱动的设备名有时会因为上电顺序而发生变化,这对于程序开发很不方便,因此需要固定设备名。 二、固定设备名 1、查看自己的usb设备的idProduct和idVendor,使用命令 ...
  • 强大的上位机虚拟串口配置工具,轻松几步配置,即可实现数据传输,简单易用。第一步:打开NetModuleConfig网络配置工具。...3.点击搜索出来的设备“CH9121”,在设备名CH9121下面有设备IP、子网掩...
  • 1、连接电脑和串口服务器网络,电脑IP地址设置为200.200.200.101。2、解压安装包,打开文件夹里,文件夹中主要有USR-TCP232-M4K3-setup-V2.3.3.97.exe和usr-tcp232-Test-V1.3.exe等两个程序。如果没有,检查一下...
  •   以USB转串口设备为例,通常设备节点为ttyUSBx(x为0~n),Linux内核会根据设备插入的先后顺序进行编号的分配,比如第一个插入的设备编号为ttyUSB0,然后依此加1,变为ttyUSB1,ttyUSB2……   如果仅仅以设备...
  • 因为项目需要支持usb 串口的设备,因为... 但是热插拔或者同时插入几个usb 串口设备。生成ttyUSB* 就是不确定序列号。 所以我们通过android ueventd 守护进程根据固定的设备路径做软连接。apk 就可以打开这个软连接...
  • 对于相同的两根串口线,接到工控机上后在lsusb中显示的id号则是一样的,用传统的绑定方法无法绑定,所以得先查看设备的kernel值,每个... 1.dmesg – 打印 USB 设备名。查看每个串口设备对应的kernel和id    ...
  • 因为项目需要支持usb 串口的设备,因为linux... 但是热插拔或者同时插入几个usb 串口设备。生成ttyUSB* 就是不确定序列号。 所以我们通过android ueventd 守护进程根据固定的设备路径做软连接。apk 就可以打开这个软
  • 学习目标在上一篇文章 《基于STM32固件库MDK5工程建立》 基础上,将Keil工程名称Template修改为Usart添加延时函数文件及串口1实现文件main.c文件中测试printf函数将模板工程Template修改为Usart在工程文件目录中...
  • 文章目录模块配套软件COM测试NET测试自回环验证模块使用正点原子例程正点原子在用户资料支持这方面一直做非常不错,但是对于这个串口转以太网模块,还是感觉有些地方写不太清晰,在这里记录一下我调试...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 449
精华内容 179
关键字:

串口设备的设备名