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

    2017-02-06 10:36:57
    串口通信,一般是指RS232、RS422之间的通信。matlab中有专门的serial函数来创建串口对象。设串口ID号为COM1,则创建方法为: >>scom = serial('com1'); 复制代码 创建完串口对象后,一般需要设置串口...
    串口通信,一般是指RS232、RS422之间的通信。matlab中有专门的serial函数来创建串口对象。设串口ID号为COM1,则创建方法为:
    1. >>scom = serial('com1');
    复制代码
    创建完串口对象后,一般需要设置串口对象的属性,否则,串口不会相互通信。

    1. >> get(scom)
    2.     ByteOrder = littleEndian
    3.     BytesAvailable = 0
    4.     BytesAvailableFcn = 
    5.     BytesAvailableFcnCount = 48
    6.     BytesAvailableFcnMode = terminator
    7.     BytesToOutput = 0
    8.     ErrorFcn = 
    9.     InputBufferSize = 512
    10.     Name = Serial-COM1
    11.     ObjectVisibility = on
    12.     OutputBufferSize = 512
    13.     OutputEmptyFcn = 
    14.     RecordDetail = compact
    15.     RecordMode = overwrite
    16.     RecordName = record.txt
    17.     RecordStatus = off
    18.     Status = closed
    19.     Tag = 
    20.     Timeout = 10
    21.     TimerFcn = 
    22.     TimerPeriod = 1
    23.     TransferStatus = idle
    24.     Type = serial
    25.     UserData = []
    26.     ValuesReceived = 0
    27.     ValuesSent = 0
    28.     SERIAL specific properties:
    29.     BaudRate = 9600
    30.     BreakInterruptFcn = 
    31.     DataBits = 8
    32.     DataTerminalReady = on
    33.     FlowControl = none
    34.     Parity = none
    35.     PinStatus = [1x1 struct]
    36.     PinStatusFcn = 
    37.     Port = COM1
    38.     ReadAsyncMode = continuous
    39.     RequestToSend = off
    40.     StopBits = 1
    41.     Terminator = LF
    复制代码
    展开全文
  • labview 串口通信 设置

    2012-01-04 22:37:25
    labview 串口通信 设置 labview 串口通信 51单片机
  • 实验环境树莓派 3B 开发板2018-06-27-raspbian-stretch 树莓派操作系统使用 Windows 10 通过网线连接远程...由于 ZigBee 使用的是串口通信方式,所以我们需要打开树莓派的串口功能。由于 3 代的树莓派板载集成了很...

    实验环境树莓派 3B 开发板

    2018-06-27-raspbian-stretch 树莓派操作系统

    使用 Windows 10 通过网线连接远程登陆访问方式控制树莓派

    实验目的

    为了将树莓派构建成一个智能家居的数据中心,我们需要在树莓派上连接 ZigBee 无线通信模块,实现与传感器的一对多通信。

    由于 ZigBee 使用的是串口通信方式,所以我们需要打开树莓派的串口功能。由于 3 代的树莓派板载集成了很多以串口作为通信接口的模块,如蓝牙模块、低速 WiFi 模块、GPS 模块、GPRS 模块等。由于板载了蓝牙模块,而这个蓝牙模块占用了我们板子上的硬件串口,所以使得我们的 3 代树莓派在串口的设置上较为麻烦。

    3代树莓派串口存在的主要问题

    树莓派从大的方向来说一共出了3代,每一代的CPU外设基本相同,但内核不同,外设里面一共包含两个串口,一个称之为硬件串口(/dev/ttyAMA0),一个称之为mini串口(/dev/ttyS0)。硬件串口由硬件实现,有单独的波特率时钟源,性能高、可靠,mini串口性能低,功能也简单,并且没有波特率专用的时钟源而是由CPU内核时钟提供,因此mini串口有个致命的弱点是:波特率受到内核时钟的影响。内核若在智能调整功耗降低主频时,相应的这个mini串口的波特率便受到牵连了,虽然你可以固定内核的时钟频率,但这显然不符合低碳、节能的口号。在所有的树莓派板卡中都通过排针将一个串口引出来了,目前除了树莓派3代以外 ,引出的串口默认是CPU的那个硬件串口。而在树莓派3代中,由于板载蓝牙模块,因此这个硬件串口被默认分配给与蓝牙模块通信了,而把那个mini串口默认分配给了排针引出的GPIO Tx Rx,下图是树莓派3的接口图:

    其中红框中就是引出的串口IO,如果我们需要通过UART外接模块,默认情况下必须得使用性能很低的mini串口了,而且随着内核主频的变化,还会造成波特率的变化导致通信的失败,几乎很难使用。所以我们希望恢复硬件串口与GPIO 14/15的映射关系,使得我们能够通过GPIO使用高性能的硬件串口来连接我们的串口设备。

    确保串口功能已经激活

    在进行串口模式的修改之前,我们想要确保串口的功能已经激活,在 /boot/config.txt 文件中进行查看,是否存在如下语句:

    没有的话,就手动在最后一行添加:

    enable_uart=1

    重启设备,生效。

    查看串口别名和硬件串口与mini串口交换的解决方案

    树莓派可以配置文件来修改设备树,我的理解是可以通过配置文件来修改管脚的映射关系,这在许多Cortex-M3内核的单片机中也很常见,可以将同一个串口映射到不同的管脚上,以方便PCB的布线。

    为了在树莓派3中通过GPIO使用高性能的硬件串口,我们必须将分配给蓝牙使用的硬件串口与分配给IO排针的mini串口进行对换,这必然会使得蓝牙模块的功能受到影响,但还好,蓝牙并不是必须的。

    在树莓派系统的 /boot/overlays/ 目录下,提供了一个 pi3-miniuart-bt.dtbo文件。其文件作用可以在当前目录下的 README 文件中进行查看:

    README文件中说明了这个文件的功能是将树莓派3的蓝牙切换到mini串口(ttyS0),并且恢复硬件串口(ttyAMA0)到GPIO 14&15脚中。并且给出了载入的方法。

    首先在树莓派命令终端中通过命令查看树莓派3当前的串口映射关系:

    ls -l /dev

    红色框中体现的应该是一种映射关系,此处暂时没有做深究,简单理解 serial0 就是GPIO映射的串口,此时GPIO映射的串口是默认的 /dev/ttyS0这个mini串口。

    禁用串口的控制台功能

    前面的步骤已经交换了硬件串口与mini串口的映射关系,但现在想使用树莓派外接串口模块进行通信还不行,因为树莓派IO引出的串口默认是用来做控制台使用的,它的初衷是为了在没有网络接口时,通过串口对树莓派进行相关的配置。因此需要禁用这个默认功能,使得串口为我们自由使用。

    在树莓派命令窗口中分别通过如下两个命令停止和禁用串口的控制台功能:

    sudo systemctl stop serial-getty@ttyAMA0.service

    sudo systemctl disable serial-getty@ttyAMA0.service

    然后通过下列指令编辑 cmdline.txt 文件:

    sudo vim /boot/cmdline.txt

    然后看到里面类似如下的内容:

    然后,我们把红色方框框起来的那部分删除即可,得到如下结果:

    重启设备,生效。

    将树莓派的硬件串口与mini串口默认映射对换

    使用下面这条指令编辑 /boot/config.txt 文件

    sudo vim /boot/config.txt

    根据之前在 README 文件中得到指示内容在该文件中增加一行代码:

    dtoverlay=pi3-miniuart-bt

    然后保存文件,重启树莓派使之生效。

    再通过 ls -l /dev 命令查看修改后的映射关系:

    此时,ttyAMA0串口可以正常用于串口通信,ttyS0则无法被用于串口通信,蓝牙功能失效。

    编写一个简单的串口程序

    wiringPi 实际上不只提供了基本的IO口的读写函数,还提供了串口操作库函数,引用 "wiringSerial.h" 即可使用,仍然使用前面的工程,参考 wiringpi的串口例程 ,写了如下代码:

    #include #include #include #include #include #include

    char UartBuff[100];

    int main(void)

    {

    int fd;

    if ((fd = serialOpen("/dev/ttyAMA0", 115200)) < 0)

    {

    fprintf(stderr, "Unable to open serial device: %s\n", strerror(errno));

    return 1 ;

    }

    serialPuts(fd, "uart send test, just by launcher\n");

    while(1)

    {

    UartBuff[0] = serialGetchar(fd);

    if (UartBuff[0] > 0)

    {

    putchar(UartBuff[0]);

    serialPutchar(fd,UartBuff[0]);

    }

    }

    return 0;

    }

    使用 USB 转 TTL 串口模块,USB 端接电脑,TTL 端接树莓派的 IO 口,实物连接图如下:

    运行在树莓派上编写完成的串口接收和发送程序,我们在 Windows 电脑端的串口调试助手接收到如下数据:

    接着,从串口助手发送“hello world!”给树莓派,树莓派接收到如下数据,并打印出来:

    串口助手也同时接收到如下信息:

    至此,证明我们的树莓派串口设置成功。

    最后,再给出一份使用 Python2 写的串口通信代码,提供给大家参考,毕竟使用 Python 再树莓派上进行数据处理的人相对会比较多一些:

    import serial

    import time

    ser = serial.Serial("/dev/ttyAMA0", 115200)

    def main():

    while True:

    recv = get_recv()

    if recv != None:

    print recv

    ser.write(recv[0] + "\n")

    time.sleep(0.1)

    def get_recv():

    cout = ser.inWaiting()

    if cout != 0:

    line = ser.read(cout)

    recv = str.split(line)

    ser.reset_input_buffer()

    return recv

    if __name__ == "__main__":

    try:

    main()

    except KeyboardInterrupt:

    if ser != None:

    ser.close()

    参考资料:

    展开全文
  • WinRiver串口通信设置

    2016-06-29 11:06:23
  • ``本人编程半年,经常使用树莓派,整理出来的串口比较简单的设置方式1、编辑config.txt文件sudo nano /boot/config.txt查看是否有以下语句,无则手动填上enable_uart=1重启sudo reboot2、查看串口映射关系ls -l /dev...

    ``本人编程半年,经常使用树莓派,整理出来的串口比较简单的设置方式

    1、编辑config.txt文件

    sudo nano /boot/config.txt

    查看是否有以下语句,无则手动填上

    enable_uart=1

    重启

    sudo reboot

    2、查看串口映射关系

    ls -l /dev

    未修改之前serial0对应的是ttyS0,serial1(mini串口)对应ttyAMA0

    3、禁用停止和禁用串口控制台功能(可不操作)

    sudo systemctl stop serial-getty@ttyAMA0.service

    sudo systemctl disable serial-getty@ttyAMA0.service

    4、编辑cmdline.txt文件

    sudo nano /boot/cmdline.txt

    删除以下部分

    console=serila0,115200

    修改成以下样式

    dwc_otg.lpm_enable=0 console=tty1 root=devmmcblk0p2 rootfstype=ext4elevator=deadline rootwait fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo

    重启

    sudo reboot

    5、编辑config.txt文件,添加以下语句

    dtoverlay=pi3-miniuart-bt # 让蓝牙使用mini 串口

    dtoverlay=pi3-disable-bt # 直接关闭蓝牙

    注释掉则会改回正常状态

    6、查看串口映射关系

    此时serial0应该对应ttyAMA0,serial1对应ttyS0

    7、测试

    树莓派GPIO14连接串口传感器的RX,GPIO15连接串口传感器的TX,执行以下代码

    import time

    import serial

    _ser=serial.Serial(port='/dev/ttyAMA0',baudrate=9600) # 波特率按照实际传感器波特率

    while 1:

    data = _ser.read(5)

    #data = _ser.readline()

    print(data)

    展开全文
  • linux下串口通信设置

    2017-04-24 17:18:35
  • 串口通信设置步骤

    2016-10-16 11:18:11
    打开串口, fd = open("/dev/ttyS0", O_RDWR|O_NOCTTY|O_NDELAY); 配置终端接口选项 这是一个由termios这个结构体控制。 结构成员: c_cflag | 控制选项 c_lflag | 行选项 c_iflag | 输入选项 c_oflag |

    Linux系统设备都是以设备文件的形式存在的,使用open函数来访问它。

    1. 打开串口,
    fd = open("/dev/ttyS0", O_RDWR|O_NOCTTY|O_NDELAY);
    1. 配置终端接口选项
      这是一个由termios这个结构体控制。
      结构成员:
      c_cflag | 控制选项
      c_lflag | 行选项
      c_iflag | 输入选项
      c_oflag | 输出选项
      c_cc | 控制字符
      c_ispeed| 输入波特率
      c_ospeed| 输出波特率
    展开全文
  • 树莓派python版本的串口通信设置

    千次阅读 2019-08-12 20:58:19
    经过一天的探索终于解决了一个问题,就是在树莓派上用python代码来使用串口来通讯,看过了无数的教程 踩过了无数的坑,下面是我结合各个案例总结的设置方法。 参考链接: 1....
  • 本人编程半年,经常使用树莓派,整理出来的串口比较简单的设置方式 1、编辑config.txt文件 sudo nano /boot/config.txt 查看是否有以下语句,无则手动填上 enable_uart=1 重启 sudo reboot 2、查看串口映射关系 ls -...
  • L文件捕获开关。...P通信参数。允许你改变bps速率,奇偶校验和位数。Q不复位modem就退出minicom。如果改变了macros,而且未存盘,会提供你一个save的机会。R接收文件。从各种协议(外部)中进行选择。若f...
  • 前一段做了个串口通信小软件,就是现实利用上位机软件通过串口通信对下位机(单片机)通信,校时LED点阵万年历,省去按键调节的麻烦,
  • sudo nano /etc/wpa_supplicant/wpa_supplicant.conf 第一行 写入country=CN 下面空白处: network={ ssid=”账号” psk=”密码” } 注意:可以添加多个wifi 格式为: network={ ssid=”账号” ...回车...
  • 基于VC++6.0利用MSComm控件编写串口通信,程序中如何实现可选择串口号、波特率、校验位等的设置? (即在界面可通过下拉列表实现波特率的选择)
  • 1. 串口通信问题 ================================================================================================ =====================================================================================...
  • wince模拟器与PC进行串口通信,说明设置步骤,并附详细步骤图解
  • TinyOs开发-----TinyOs 串口通信设置

    千次阅读 2012-09-28 16:22:21
    1、运行java 程序可以测试串口通信。 例如TestSerial    命令:java net.tinyos.tool.Listen -commserial@:   PORT 取决于平台,如果是Windows/Cygwin平台,则使用 COMN,而如果是Linux/Unix平台,则使用/dev...
  • //设置超时 DCB dcb; GetCommState(m_HandleCom,&dcb); dcb.BaudRate = 9600; //波特率为9600 dcb.ByteSize= 7 ; //每个字节有8位 dcb.Parity = NOPARITY; //无奇偶校验位 dcb.StopBits = ...
  • matlab 串口通信 串口设置,matlab 通过设置串口以及配置串口波特率 整理数据 完成串口发送工作
  • 串口通信参数设置

    万次阅读 2017-06-21 09:48:22
    2.串口通信参数设置 工具:串口调试助手 (1)波特率 串口通信时的速率。  如每秒钟传送1920个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),波特率为240Bd,比特率...
  • 硬件串口通信,安卓实现,可以看到收到的数据包
  • 430串口 SPI 通信设置

    2012-07-30 20:31:07
    430串口通信 SPI通信设置 等功能寄存器相关数值
  • STM32f103寄存器配置串口通信主程序接收数据,上位机串口发送的数据已回车键结束,单片机接之后将所有数据发回。#include"stm32f10x_lib.h"#include"sys.h"//#include"ioshezhi_jb.h"unsignedcharres;//串口接受数据...
  • 设置串口通信参数

    2012-08-05 22:16:40
    在linux平台下设置串口通信参数,包括波特率、数据位、校验位等
  • 51单片机串口通信——串口设置

    千次阅读 2017-08-08 14:19:28
    51单片机的串口通信如果全部把发送原理讲完的话可能要打好久几万字, 最重要的是我有些地方也没搞懂的,也讲不清楚,所以今天就直接用代码来解释…….hahahaha 串行口工作之前,应对其进行初始化,主要是设置产生...
  • 串口通信设置串口参数时如下: m_Comm.put_Settings(_T("115200,n,8,1")); _现在想通过变量代替具体数据,如用变量baudrate代替115200,请问该怎么实现? 比如表达如下意思:_ m_Comm.put_Settings(_T("baudrate,n,...

空空如也

空空如也

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

串口通信设置