精华内容
下载资源
问答
  • 多串口通信

    2018-06-25 22:44:24
    多串口通信源代码:利用AppWizard向导创建的名为“MSCommDemo”的单文档应用程序。
  • 多串口通信

    2017-04-07 20:57:14
    支持多串口通信
  • 基于MOXA多串口卡的多串口通信的实现ImplementationofMultipleSerialPortCommunicationBasedonMOXAMultiportSerialBoard柯伯乐池红汤天浩(上海海运学院,上海200135)摘要借以MOXA多串口卡在工控同时与多台下位机或...

    基于

    MOXA

    多串口卡的多串口通信的实现

    Implementation

    of

    M

    ultiple

    Serial

    Port

    Communication

    B

    ased

    on

    M

    OXA

    Multiport

    Serial

    Bo

    ard

    柯伯乐

    汤天浩

    (

    上海海运学院

    ,

    上海

    2001

    35)

    借以

    MOXA

    多串口卡在工控同时与多台下位机或设备进行串口通信中的应用

    ,

    深入讨论了在微软

    Vi

    sual

    B

    asic

    开发平台上开

    发控制中的串口通信的实现方法

    ,

    包括与温控仪的通信。同时简要介绍了与

    PLC

    数字显示表以及热耦真空计的串行通信。

    关键词

    MOXA

    串行通信

    温控仪

    PLC

    Visual

    B

    asic

    A

    bstract

    B

    y

    u

    si

    ng

    MOXA

    m

    ulti

    port

    serial

    board

    wi

    th

    its

    function

    of

    commu

    nicati

    ng

    with

    multiple

    slave

    computers

    or

    devices

    when

    i

    mplementing

    process

    control,

    the

    development

    of

    seri

    al

    commu

    nicati

    on

    in

    process

    con

    trols

    includin

    g

    temperature

    controller

    wi

    th

    Microsoft

    Visual

    Basic

    developi

    ng

    platform

    is

    d

    escribed

    in

    detail.

    Also,

    the

    serial

    com

    munication

    with

    PLC,

    digital

    display

    and

    thermocouple

    vacuu

    m

    unit

    is

    presented.

    Keyw

    ords

    MOXA

    board

    Seri

    al

    commu

    nicati

    on

    Te

    mperature

    controller

    PLC

    Visual

    Basic

    1

    MOXA

    多串口卡简介

    通常

    ,

    工业控制计算机所提供的串口数量有限

    ,

    而在工业控制中

    ,

    往往会有许多设备需要与同一台工

    业控制计算机进行串行通信。

    MOX

    A

    多串口卡为此提

    供了很好的解决方案。在本项目中

    ,

    选用

    MOXA

    C168P

    标准多串口卡。

    C168P

    提供

    8

    个串口用于与

    Modem

    印机等设备的通信

    ,

    它支持

    16

    位数据格式

    ,

    有全范围

    I/

    O

    地址

    ,

    另外

    ,

    板卡上的

    EEPRO

    M

    可以用来存储配

    置信息。所有这些特征

    ,

    保证了

    C168P

    的每一个串口

    能够真正的相互独立。与传统的多串口卡相比

    ,

    C168P

    用软件设置

    I/

    O

    IR

    Q,

    取代了过去用开关和跳线。

    C168P

    软件提供了简单易用的串行通信包

    ,

    用户可以

    用这软件包较容易地开发自己的应用程序。

    2

    Visual

    Basic

    实现串行通信要点

    Visual

    Basic

    是微软公司推出的功能强大的开发平

    ,

    由于其简单易用

    ,

    开发功能强

    ,

    开发周期短等优点

    ,

    现今已在工业控制领域得到极为广泛的应用。

    用户主要是借助

    Visual

    Basic

    强大的控件库来开

    发自己的应用程序。在串行通信中

    ,

    主要用到的是

    MSCo

    mm

    控件。

    MSComm

    控件提供下列两种处理通信

    的方式

    :

    ¹

    事件驱动通信是处理串行端口交互作用的一

    种非常有效的方法。在许多情况下

    ,

    在事件发生时需

    要得到通知

    ,

    可以用

    MSComm

    控件的

    OnComm

    事件捕

    获并处理这些通信事件。

    OnCo

    mm

    事件还可以检查和

    处理通信错误。

    º

    在程序的每个关键功能之后

    ,

    通过检查

    Com

    -

    mEvent

    属性的值来查询事件和错误。如果应用程序较

    ,

    并且是自保持的

    ,

    这种方法可能是更可取的。

    MSComm

    的最基本的属性

    :

    CommPort:

    设置并返回通信端口号。

    Settings:

    以字符串的形式设置并返回波特率、

    奇偶

    校验、

    数据位、

    停止位。

    PortOpen:

    设置并返回通信端口的状态。也可以打

    开和关闭端口。

    Input:

    从接收缓冲区返回和删除字符。

    Output:

    向传输缓冲区写一个字符串。

    MSComm

    通信事件如下

    :

    c

    omEvSend:

    在传输缓冲区中有比

    Sthreshold

    数少的

    字符。

    c

    omEvReceive:

    收到

    Rthreshold

    个字符。该事件将

    持续产生直到用

    Input

    属性从接收缓冲区中删除数

    据。

    c

    omEvC

    TS:

    Clear

    To

    Send

    线的状态发生变化。

    c

    omEvDSR:

    Data

    Set

    Ready

    线的状态发生变化。该

    事件只在

    DST

    1

    变到

    0

    时才发生。

    c

    omEvCD:

    Carrie

    r

    Detect

    线的状态发生变化。

    c

    omEvRing:

    检测到振铃信号。一些

    UAR

    T(

    通用异

    步接收

    )

    传输

    )

    可能不支持该事件。

    c

    omEvEOF:

    收到文件结束

    (

    ASCII

    字符为

    26)

    字符。

    对上面

    MSComm

    控件属性及事件的灵活应用

    ,

    是用

    V-

    i

    sual

    Basic

    完成串行通信的关键。

    展开全文
  • QT C++ 多线程支持多串口通信,实现了串口的基本功能,和多线程框架,C++编写,全部工程文件已压缩
  • \VxWorks中串口通信的实现\VxWorks下多串口通信设计.pdf\VxWorks中串口通信的实现\VxWorks下多串口通信设计.pdf\VxWorks中串口通信的实现\VxWorks下多串口通信设计.pdf
  • STM32多串口通信

    热门讨论 2014-12-03 14:48:08
    用STM32F103单片机实现多串口通信
  • 多串口通信服务器

    2020-03-24 16:03:21
    多串口通信服务器 ZLAN5G00A串口服务器是一款机架式16串口RS232/485/422和TCP/IP之间协议转化器。支持16个RS232串口、16个RS485、RS422串口,且RS232支持流控。通过一根网线连接到ZLAN5G00A,实现16个串口同时全双工...

    多串口通信服务器 ZLAN5G00A串口服务器是一款机架式16串口RS232/485/422和TCP/IP之间协议转化器。支持16个RS232串口、16个RS485、RS422串口,且RS232支持流控。通过一根网线连接到ZLAN5G00A,实现16个串口同时全双工工作,每路串口可作为TCP服务器、TCP客户端、UDP、UDP组播。ZLAN5G00A是多串口联网的理想选择。ZLAN5G40A是具有Modbus TCP转Modbus RTU功能的16串口Modbus网关。作为Modbus网关时,每个串口的TCP端口都可以配置为502端口,无需修改现有Modbus上位机软件的端口。
    ZLAN5G00A-8、ZLAN5G40A-8是机架式8串口服务器,外形和ZLAN5G00A相同。
    在这里插入图片描述

    硬件特点
    16个串口都支持RS232、RS485、RS422三种串口(RS422需要通过跳线设置),串口为RJ45形式,RS232支持硬件流控。使用RS232时,可提供RJ45转DB9(公头)转接线配件。
    16个串口可独立全双工工作,互不干扰,可配置为不同的波特率。
    支持4个网口的网络交换机功能,同时可当交换机使用。
    丰富的指示灯,每个串口有独立的TCP连接指示灯和数据活动指示灯。
    支持通过网线供电——POE供电(需要定制)。
    220V AC供电。
    19英寸标准1U机架结构设计,方便安装,带机架安装配件。
    软件特点
    支持TCP服务端、TCP客户端,UDP模式,UDP组播。作为TCP服务器支持10个TCP连接。
    波特率支持1200~460800bps,数据位支持5~9位,校验位可以为无校验、奇校验、偶校验、标记、空格五种方式,支持CTS/RTS硬件流控和XON/XOFF软流控。
    支持设备连接上发送MAC地址功能,方便云端管理设备。
    提供计算机端搜索、配置设备的二次开发包DLL开发库。
    支持DHCP动态获得IP、DNS协议连接域名服务器地址。
    支持云端远程搜索设备、配置设备参数。
    支持远程通过软件查看设备的TCP连接状态。虚拟串口支持数据监视功能。

    展开全文
  • 在远程监控和工业自动化系统中,串口通信因其具有连接简单、使用方便、可靠性高的优点,得到越来越广泛的应用。讨论了采用WinCE嵌入式与MSP430单片机构建串口多机...实验结果表明:该系统能够达到多串口通信的要求。
  • 使用STM32单片机进行多串口通信,采用虚拟串口软件(VSPD)结合串口调试软件进行多串口通信发送和接收功能的仿真测试研究,克服了RealView软件不能仿真接收通信的缺点。介绍了虚拟串口和仿真串口的绑定方法,给出了各...
  • 为了实现PC机同时与多个外设终端实时进行通信显示的要求,从而达到PC机对所属串口设备的实时监测与控制,本文采用基于FPGA和NiOSⅡ软核的方法开发出一套多串口通信系统。文章通过以Cyclone Ⅱ系列的EP2C8Q208C8N为...
  • 通过多串口通信技术在金刚石合成控制系统中的应用,讨论了32位Windows操作系统下,VC多串口通信技术的设计与实现方法,并运用面向对象方法和多线程技术设计了一个比较完善的串口通信类。阐述了用VC开发上位机与PLC...
  • 本源码在VS2013平台上,使用C#编程,实现了多串口通信的数据接收处理,实用性强,代码简洁,内置使用说明
  • 基于嵌入式多串口通信转换器的电能质量监控系统设计,采用自由软件设计了一种基于嵌入式多串口通信转换器的电能质量监控系统,系统采用模块化设计,设置了8串口通信转换器,实现以太网透明传输异步串行数据;...
  • 摘要:通过多串口通信技术在金刚石合成控制系统中的应用,讨论了32位Windows操作系统下,VC多串口通信技术的设计与实现方法,并运用面向对象方法和多线程技术设计了一个比较完善的串口通信类。阐述了用VC开发上位机...
  • 本文设计了一种基于PowerPC 嵌入式内核MPC565 和串口模块EMM-8M-XT 的多串口通信系统,给出了系统总体的硬件架构和软件设计流程,详述了串口卡跳线及寄存器的设置方法,实现了8 个RS232/422/485 工作模式可任意配置...
  • 多线程技术在虚拟多串口通信中的应用,很有参考价值
  • Csharp 多串口通信  顾名思义,多串口通信,普通的PC机一般只有一个串口,现在很多家用的PC都没有串口,那么问题来了,如何保证多串口呢?  有一种神器,MOXA CP-168U Series PCI bus    需要PCI插槽支持,...

    Csharp 多串口通信

      顾名思义,多串口通信,普通的PC机一般只有一个串口,现在很多家用的PC都没有串口,那么问题来了,如何保证多串口呢?

      有一种神器,MOXA CP-168U Series PCI bus 

      

      需要PCI插槽支持,现在市面上要找大主板才会有PCI。

      OK,硬件准备妥当。当然我这个项目中还需要另外一件神器,红外感应器,暂且不表。

     

      插入设备,装好驱动,你会在设备管理器中发现 serial board拓展出的8个port。Csharp有针对串口的控件:serialPort,每添加一个物理串口,就需要添加一个控件,操作如下:

      1>.实例化串口并打开

      

       serialPort.PortName = item;  //串口名称
         serialPort.BaudRate = 2400;   //波特率
         serialPort.DataBits = 8;    //数据位
         serialPort.Parity = Parity.Even; //校验位
         serialPort.StopBits = StopBits.One; //停止位
         serialPort.ReadTimeout = 3000;   //读写超时控制在3秒内
         serialPort.WriteTimeout = 3000;

         //设置数据流控制;数据传输的握手协议
         serialPort.Handshake = Handshake.None;
         serialPort.ReceivedBytesThreshold = 1;
         serialPort.RtsEnable = true;

         if (!serialPort.IsOpen)
         {
            serialPort.Open();
         }

      2>.发送数据(byte)

      

    byte[] ReadData = (byte)Function you need did
    serialPort.Write(ReadData, 0, ReadData.Length);
    serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
    //此处需要特别说明的是,很多人在debug的时候,串口接受回应的事件(serialPort1_DataReceived)没有被触发
    //此时可使用串口调试工具,检查发送的值是否正确,一般情况都是因为命令错误,没有回应,导致DataReceived没有被触发

     

      3>.接受回应并处理

      

    public void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                //结束符后,接收返回值           
                int by = serialPort.BytesToRead;
                byte[] rece = new byte[by];
                serialPort.Read(rece, 0, by);
    
                //解析返回值          
               //dosomething
            }        

      如上所述,你只有一个串口需要操作是这样做可以,但是如果你有5个 8头的serial board需要处理时,你就不得不考虑这样做的效率了。那应该怎样呢??

      针对多个串口,可以通过读取注册表获取PC的所有被激活的串口,然后遍历实例化,由于没有使用多线程,不用考虑线程之间的冲突,即使资源被释放,也会在3秒后触发下一个周期

      

         /// <summary>
            /// 打开并设置所有的串口
            /// </summary>
            private void OpenSettingAllSerialPort()
            {
                try
                {
                    Microsoft.Win32.RegistryKey reg = Microsoft.Win32.Registry.LocalMachine;
                    Microsoft.Win32.RegistryKey hardware = reg.OpenSubKey("HARDWARE");
                    Microsoft.Win32.RegistryKey dev = reg.OpenSubKey("DEVICEMAP");
                    Microsoft.Win32.RegistryKey siteKey = reg.OpenSubKey("SERIALCOMM");
    
                    //获取所有串口
                    string[] strPort = System.IO.Ports.SerialPort.GetPortNames();   //siteKey.GetValueNames();
    
                    if (ExcuteNum < 1)
                    {
                        foreach (string item in strPort)
                        {
                            serialPort.PortName = item;  //串口名称
                            serialPort.BaudRate = 2400;   //波特率
                            serialPort.DataBits = 8;    //数据位
                            serialPort.Parity = Parity.Even; //校验位
                            serialPort.StopBits = StopBits.One; //停止位
                            serialPort.ReadTimeout = 3000;   //读写超时控制在3秒内
                            serialPort.WriteTimeout = 3000;
    
                            //设置数据流控制;数据传输的握手协议
                            serialPort.Handshake = Handshake.None;
                            serialPort.ReceivedBytesThreshold = 1;
                            serialPort.RtsEnable = true;
    
                            if (!serialPort.IsOpen)
                            {
                                serialPort.Open();
                            }
    
                            byte[] ReadData = devOpreation.Broadst_Addr();
                            serialPort.Write(ReadData, 0, ReadData.Length);
                            serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
    
                            ExcuteNum++;
                        }
                    }
                    else
                    {
                        byte[] ReadData = devOpreation.Broadst_Addr();
                        serialPort.Write(ReadData, 0, ReadData.Length);
                        serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show( "串口未找到或被占用. " + ex.Message);                 
                }          
                
            }

      至此,你用很少的代码实现了多串口的实例化并打开,然后发送和接受处理利用同样的场景,问题得到解决。

      到最后这样就是你看到的真实样子。

      

      2015/03/17  TymonYang

     

    转载于:https://www.cnblogs.com/tymonyang/p/4344909.html

    展开全文
  • msp430的多串口通信CRC校验 有4个子串口,一个母串口,三种波特率调节
  • 本文提出了一种新的实现方法--基于FPGA和通用异步通信芯片实现多串口通信设计。在不进行硬件改动的基础上,通过在FPGA内建立一个缓存机制,实现接收串口芯片的数据,达到一定量时向DSP发送中断读取数据。
  • MFC多串口通信

    2014-06-16 20:55:55
    VC下多串口开发demo,能够正常多串口同时发送接收数据,可以为串口二次开发提供思路
  • 在软件开发过程中,常常会碰到相似问题, 做重复的工作。如何提高效率,保证代码的可靠 性,可重用性呢?前人总结出了很多软件开发模 ...模式”——“工厂模式”在多串口通信软件开发中 的应用展开描述。
  • STC15W系列,四个串口之间的通信程序,任一端口发送的内容可以在其它端口显示出来,采用库函数编程。代码短小,经调试可用。
  • 树莓派一共有26根GPIO,所以最多可以做13个串口出来,如果需要多串口通信的同学可以试试。 除串口外,猪皮库还有自己的i2c通信接口和GPIO通信示例,详情可以查看http://abyz.me.uk/rpi/pigpio/download.html 一、...

    软串口库pigpio可以使用树莓派的所有GPIO针用作串口来通信,且保留树莓派原有通信功能。缺点: 最多只能读取32个bit长度数据,所以需要自己拼接数据。
    树莓派一共有26根GPIO,所以最多可以使用13个组软串口,如果需要多串口通信的同学可以试试。
    除串口外,猪皮库还有自己的i2c通信接口和GPIO通信示例,详情可以查看http://abyz.me.uk/rpi/pigpio/download.html
    一、安装pigpio库
    sudo apt install pigpio
    二、启动软串口
    sudo pigpiod
    三、示例,以我买的液位传感器为例

    import os
    import time
    import pigpio
    import threading
    
    BAUD = 9600
    
    
    class Liquid(object):
    
        def __init__(self, rx_pin, tx_pin, data_cb):
            self._rx_pin = rx_pin
            self._tx_pin = tx_pin
            self._data_cb = data_cb
            # PIGPIO
            self._pi = pigpio.pi()
            if not self._pi.connected:
                os.system('sudo pigpiod')
                self._pi = pigpio.pi()
            self._pi.set_mode(self._rx_pin, pigpio.INPUT)
            self._pi.set_mode(self._tx_pin, pigpio.OUTPUT)
            pigpio.exceptions = False
            self._pi.bb_serial_read_close(self._rx_pin)
            pigpio.exceptions = True
            self._pi.bb_serial_read_open(self._rx_pin, BAUD, 8)
            # ATTR
            self._thread_ts = 1
            self._msg = bytes()
            # THREAD
            self._thread = threading.Thread(target=self._working)
            self._thread.daemon = True
            self._thread.start()
    
        def _working(self):
            while 1:
                count, data = self._pi.bb_serial_read(self._rx_pin)
                if count:
                    self._msg += data
                    if len(self._msg) == 4:
                        if (self._msg[0] + self._msg[1] + self._msg[2]) & 0x00ff == self._msg[3]:
                            self._data_cb(module='LIQUID', data=self._msg[1] * 256 + self._msg[2])
                            self._msg = bytes()
                time.sleep(self._thread_ts)
    
        def write_data(self, msg):
            self._pi.wave_clear()
            self._pi.wave_add_serial(self._tx_pin, BAUD, msg)
            data = self._pi.wave_create()
            self._pi.wave_send_once(data)
            if self._pi.wave_tx_busy():
                pass
            self._pi.wave_delete(data)
    
        def set_thread_ts(self, thread_ts):
            self._thread_ts = thread_ts
    
        def get_thread_ts(self):
            return self._thread_ts
    
    
    if __name__ == '__main__':
    
        def _data_cb(module, data):
            print(module, data)
    
        liquid = Liquid(rx_pin=15, tx_pin=14, data_cb=_data_cb)
    

    兴趣可以一块交流沟通,互相学习。

    展开全文
  • 引言  随着非线性电力电子元器件的应用,电能质量问题日益严重。因此有必要实时在线监测电能质量,以便... 因此,本文搭建了一种基于嵌入式多串口通信转换器的电能质量监控系统。  1 电能质量监控系统总体设计  
  • Arduino的多串口通信问题

    万次阅读 2018-08-13 15:22:41
    对于Arduino的串口通信,主要有硬件串口和软串口。当然硬件串口相对于软串口要可靠地。 以下将对mega2560的硬件串口和软串口进行描述。 * 硬件串口* ArduinoMega有四个硬件串口,想想也够用了吧,不过要是还...
  • 介绍了实现多串口通信的基本方法,采用VC++6. 0并结合定时器和多线程技术编写,提出了实现多串 口通信的三种方法,给出了实现的方法和步骤,并对三种方法进行了比较。实践证明,这三种模型均有效地实现了多 串口通信。
  • 下面介绍的程序主要完成了含多串口的上位机监控程序所涉及到的无阻塞通信后台运行、数据 的实时接收、处理和显示等功能。 2 设置站点属性 2. 1 设定各站点处理数据的参数 虽然之前准备了很多串口,但未必都...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,161
精华内容 2,064
关键字:

多串口通信