树莓派4B 串口通信

  • 提前下载安装Glade图形编辑器
  • 参考 树莓派4B安装netcore 环境部署、发布、执行操作
  • 准备串口设备本文使用串口控制继电器设备 如图

1、发现串口

        void GetSerialPort()
        {
            Console.WriteLine("发现串口:");
            var names = SerialPort.GetPortNames();
            int count = 1;
            foreach (var item in names)
            {
                ports.Add(count.ToString(), item);
                Console.WriteLine($"{count.ToString()}:{item}");
                count++;
            }
            Console.WriteLine("输入要打开的串口编号:" + ports.Keys.Join(","));

            string portName = ports["2"];

            _SerialPort = new SerialPort(portName, 9600, Parity.None, 8, StopBits.One);
            _SerialPort.Open();
        } 

2、发送协议

        void SendCommand(string command)
        {
            Console.WriteLine(command);
            var buf = command.ToHex();
            if (_SerialPort != null && _SerialPort.IsOpen)
                _SerialPort.Write(buf, 0, buf.Length);
        }

3、Glade设计界面

        <?xml version="1.0" encoding="UTF-8"?>
<interface>
  <requires lib="gtk+" version="2.24"/>
  <!-- interface-naming-policy project-wide -->
  <object class="GtkWindow" id="MainWindow">
    <property name="can_focus">False</property>
    <property name="title" translatable="yes">继电器控制</property>
    <property name="window_position">center</property>
    <child>
      <object class="GtkVBox" id="vbox1">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <child>
        </child>
        <child>
          <object class="GtkHBox" id="hbox1">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <child>
              <object class="GtkToggleButton" id="btnOne">
                <property name="label" translatable="yes">继电器1</property>
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="receives_default">True</property>
                <property name="tooltip_markup">1</property>
                <signal name="toggled" handler="on_togglebutton1_toggled" swapped="no"/>
              </object>
              <packing>
                <property name="expand">True</property>
                <property name="fill">True</property>
                <property name="position">0</property>
              </packing>
            </child>
            <child>
              <object class="GtkToggleButton" id="btnTwo">
                <property name="label" translatable="yes">继电器2</property>
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="receives_default">True</property>
                <property name="tooltip_markup">2</property>
                <signal name="toggled" handler="on_togglebutton1_toggled" swapped="no"/>
              </object>
              <packing>
                <property name="expand">True</property>
                <property name="fill">True</property>
                <property name="position">1</property>
              </packing>
            </child>
            <child>
              <object class="GtkToggleButton" id="btnThree">
                <property name="label" translatable="yes">继电器3</property>
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="tooltip_markup">3</property>
                <property name="receives_default">True</property>
                <signal name="toggled" handler="on_togglebutton1_toggled" swapped="no"/>

              </object>
              <packing>
                <property name="expand">True</property>
                <property name="fill">True</property>
                <property name="position">2</property>
              </packing>
            </child>
            <child>
              <object class="GtkToggleButton" id="btnFour">
                <property name="label" translatable="yes">继电器4</property>
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="receives_default">True</property>
                <property name="tooltip_markup">4</property>
                <signal name="toggled" handler="on_togglebutton1_toggled" swapped="no"/>
              </object>
              <packing>
                <property name="expand">True</property>
                <property name="fill">True</property>
                <property name="position">3</property>
              </packing>
            </child>
          </object>
          <packing>
            <property name="expand">True</property>
            <property name="fill">True</property>
            <property name="position">1</property>
          </packing>
        </child>
        <child>
          <object class="GtkToggleButton" id="togglebutton1">
            <property name="label" translatable="yes">全部打开</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <property name="tooltip_markup">0</property>
            <signal name="toggled" handler="on_togglebutton1_toggled" swapped="no"/>
          </object>
          <packing>
            <property name="expand">True</property>
            <property name="fill">True</property>
            <property name="position">2</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>

源码下载 code.rar

原文地址:https://www.cnblogs.com/lecheng001/p/12090269.html

时间: 2024-11-07 00:24:03

树莓派4B 串口通信的相关文章

树莓派3b 串口通信初次尝试

准备工作: 1. 安装wiringPi 2. 修改config.txt sudo nano /boot/config.txt 在文件的末尾添加: dtoverlay=pi3-miniuart-bt 3. 修改cmdline.txt sudo nano /boot/cmdline.txt 删除其中红色部分: dwc_otg.lpm_enable=0 console=serial10,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 el

树莓派+Python+pyserial 2.7实现串口通信

手上有个CCD Camera(Barcode Reader/Scanner Module),它是通过RS232通信的,用RS232转USB的转接线连接树莓派,即可完成硬件连接.对于串口通信,可以通过pyserial实现. 首先,安装pyserial: 从https://pypi.python.org/pypi/pyserial下载最新版本的安装包,再通过下面的命令完成安装: tar zxvf pyserial-2.7.tar.gz cd pyserial-2.7 python setup.py

36 树莓派串口通信

树莓派查询串口 ls /dev/tty* 通过  拔插发现多了一个 就是他了. arudnio代码 void setup() { Serial.begin(9600); //打开串口 } void loop() { Serial.println("Hello Raspberry,I am Arduino."); delay(1000); if ( Serial.available()) { if('s' == Serial.read()) Serial.println("He

51单片机之串口通信(三)

51单片机之串口通信(三) 已有 47 次阅读2015-12-29 00:21 |个人分类:51单片机| 单片机, 通信 用串口实现发送和接收同时可操作: 电脑显示结果如图: 源程序: /*项目名称:串口发送接收实验项目内容:串口发送接收同时进行,计算机发送数据给单片机控制P0口,从而控制LED灯的亮灭,单片机发送数据到计算机,计算机显示出来时间:2015年12月23日项目负责人:YUAN*/#include <reg52.h>typedef unsigned char uChar8;type

(转载)用vs2010开发基于VC++的MFC 串口通信一*****两台电脑同一个串口号之间的通信

此文章以visual C++数据採集与串口通信測控应用实战为參考教程 此文章适合VC++串口通信入门 一.页面布局及加入控件 1, 安装好vs2010如图 2, 新建一个基于VC++的MFC项目comm 注意:点击ok,然后next,这时候要将application type改成dialog base.接着next到最后一个对话框是将generated dasses改成CcommDlg,然后finish 4, 将新生成的项目的对话框默认dialog edit删去,如图 5,在对话框中加入两个st

嵌入式Linux裸机开发(七)——UART串口通信

嵌入式Linux裸机开发(七)--UART串口通信 一.UART串口通信简介 通用异步收发器简称UART,即UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER, 它用来传输串行数据.发送数据时, CPU 将并行数据写入UART,UAR按照一定的格式在一根电线上串 行发出:接收数据时, UART检测另一根电线的信号,将串行收集在缓冲区中, CPU 即可读取 UART 获得这些数据. 在 S5PV210中, UART提供了 4 对独立的异步串口I/O端口,

51单片机之串口通信(一)

一.基础知识 1.串行通信和并行通信:目前用的比较多的是串行通信.串行通信优点是连接简单,传输距离远:缺点是传输速度慢. 2.串行通信:分为同步通信和异步通信:异步通信是指发送和接收设备利用各自的时钟控制数据的发送和接收. 3.串行通信的传输方向:单工,半双工,全双工. 4.波特率:每秒钟传输2进制代码的位数,如1个字节为10位,每秒传输240个字节,则波特率为10*240=2400bps,单位是bps: 5.RS-232C:25个管脚,我们用到的是PGND(保护接地).TXD(发送数据),RX

转:Qt编写串口通信程序全程图文讲解

转载:http://blog.csdn.net/yafeilinux/article/details/4717706  作者:yafeilinux (说明:我们的编程环境是windows xp下,在Qt Creator中进行,如果在Linux下或直接用源码编写,程序稍有不同,请自己改动.) 在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类.我们可以去 http://sourceforge.net/projects/qextser

C#串口通信—向串口发送数据,同步接收返回数据

最近写C#串口通信程序,系统是B/S架构.SerialPort类有一个DataReceived事件,用来接收串口返回的数据,但这种方式在C/S架构下很好用,但B/S就不好处理了.所以写了一个同步模式接收返回数据的方法,不使用DataReceived事件.经过测试,可以正常使用(不支持多线程调用). 一.Machine类 1.Machine类有一个静态变量,定义如下: private static SerialPort serialPort = null; 2.向串口发送数据,同步接收返回数据的方