如何向串口写入字符

如何向串口写入字符

我有一台老式的串行光谱仪,只能在 win9x 上运行。我想将其转换为 Linux 系统,但现有软件是专有的,无法运行。我能够访问光谱仪内部的控制台。控制台接受键盘字符命令,并将输出发送到串行端口。

在 vb6 中我可以使用 char 值写入 com 端口 http://www.gtwiki.org/mwiki/?title=VB_Chr_Values 使用 ComPort.Write(Chr(34))

我对使用 Qt 作为界面很感兴趣,如何使用 qt 发送与 ComPort.Write(Chr(34)) 相同效果的内容?

答案1

  • 以下是来自 Qt 官方网站 (C++) 的一个例子

    http://qt-project.org/wiki/QtSerialPort

  • 如果你有 Visual Basic 背景,你可能更喜欢 Gambas3

    http://gambasdoc.org/help/comp/gb.net/serialport?v3

    Gambas 具有与 Visual Basic(VB)类似的语法,并且支持 Qt 作为 GUI 工具包。

    http://gambasdoc.org/help/comp?v3

  • 在 Linux/BSD 中,串行端口比 Windows 更易于访问。因此,您甚至可以从 shell/终端写入它,或者使用大多数编程语言的系统调用。

    使用 Android 手机作为调制解调器的 shell 示例,它可能有助于调试:

    1. 读取串口(需要root权限):

      sudo su
      cat /dev/ttyACM0
      

      您可以根据需要只阅读几行:

      head -n2 /dev/ttyACM0
      
    2. 写入串行,打开其他终端选项卡或窗口:

      sudo su
      echo -e "AT" > /dev/ttyACM0
      

      它显示OK在读取端口窗口上,您也可以发送十六进制数据(使用 -n 选项以避免在末尾发送新行)

      echo -e -n "\x41\x54\x0a" > /dev/ttyACM0
      

      与...一样:

      echo -e "\x41\x54" > /dev/ttyACM0
      

      Shell 会将未显示的十六进制显示为小方块,其中写有其值。试试这个。

      echo -e "\x13"
      

相关内容