我有一台老式的串行光谱仪,只能在 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++) 的一个例子
如果你有 Visual Basic 背景,你可能更喜欢 Gambas3
http://gambasdoc.org/help/comp/gb.net/serialport?v3
Gambas 具有与 Visual Basic(VB)类似的语法,并且支持 Qt 作为 GUI 工具包。
在 Linux/BSD 中,串行端口比 Windows 更易于访问。因此,您甚至可以从 shell/终端写入它,或者使用大多数编程语言的系统调用。
使用 Android 手机作为调制解调器的 shell 示例,它可能有助于调试:
读取串口(需要root权限):
sudo su cat /dev/ttyACM0
您可以根据需要只阅读几行:
head -n2 /dev/ttyACM0
写入串行,打开其他终端选项卡或窗口:
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"