zoukankan      html  css  js  c++  java
  • winform 端口serialport简用

    最近的一个小项目中需要从串口读取摄像机的应答指令,因此在程序中用到了SerialPort控件(使用SerialPort类也可以)。
    在SerialPort控件的属性列表中主要注意3个地方:
    (1)PortName:表示要打开的通信端口名称;
    (2)BaudRate:表示端口的波特率;
    (3)ReceivedBytesThreshold:表示触发SerialPort控件的DataReceived事件前输入缓冲区里的字节数;
    在这个小项目中,PortName的值为摄像机与电脑连接的端口(可通过设备管理器查看);
            BaudRate的值与摄像机串口设置的值一致;
            ReceivedBytesThreshold默认为1,表示当输入缓冲区中有1个字节就触发SerialPort控件的DataReceived事件(
    //初始化窗体
    private void Form1_Load(object sender, EventArgs e)
            {
                serialPort1.ReceivedBytesThreshold = 1;
                serialPort1.PortName = "COM3";
                serialPort1.BaudRate = 9600;
                serialPort1.Open();//打开串口
                serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort1_DataReceived);
            }
    
    //serialPort1控件的DataReceived事件
    private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
            {
                serialPort1.Read(Data,0,4);//data数组用于存储读取的数据
            }
    

     使用一个Button控件来向摄像机发送查询指令

    private void btnSend_Click(object sender, EventArgs e)
            {
                if (serialPort1.IsOpen == true)
                {
                    serialPort1.Write(Power, 0, 5);//Power数组用于存储发送给摄像机的查询指令
                }
            }
    
    在该事件中使用SerialPort.Read读取输入缓冲区中的数据)
  • 相关阅读:
    Windows 认证小结
    Linux 提权学习小结
    ssrf与gopher与redis
    hacker101 CTF 学习记录(二)
    Hacker101 CTF 学习记录(一)
    libwebsockets支持外部eventloop变更
    ypipe, zmq的核心部件,并行读写的管道。
    std::regex与boost::regex的性能差5倍,有profile有真相。
    Spring整合WebSocket
    温故知新——Spring AOP(二)
  • 原文地址:https://www.cnblogs.com/gaara-zhang/p/9078698.html
Copyright © 2011-2022 走看看