2

尝试使用 FreeBasic 从 COMn: 端口读取数据。该设备是带有 ARM 控制器的触摸屏,可通过 FTDI 芯片在 9600、N、8、1 处打入串行数据,以将 USB 连接到 PC。我用于测试的这块主板在 BIOS 上有本机 COM1,由于某种原因,Windows 阻止了 COM2、3、4、5、6、8、9、10... 将此设备连接到主板后,它会枚举 USB 并分配 COM7 : 在设备管理器上。Putty程序在触摸屏上中断红外矩阵时可以很好的读取为COM7,输入数据显示为AxxxyyyZ,其中xxx和yyy分别为坐标1~600和1~800,中断时Z为“B”,“N”抬起时和拖动时的“C”,最初的“A”只是同步。

很容易在 FreeBasic 中编写代码来绘制触摸处的圆圈和拖动时的线条,对吧?是的,除了 FreeBasic 无法读取 COM7:在这个世界上一无所有。它打开,OPEN "COM7:N,8,1" as 1没有错误,但无法从 Windows 读取数据。

我怀疑 FreeBasic 的 COMn 存在一些问题:当“n”高于某个值时。所以我真的在设备管理器上销毁了 COM2,在几次重新启动后,我可以在设备管理器上看到 COM2 空闲,并将 2 分配给这个 FTDI 连接,瞧,工作正常。

它可能是别的东西,我不知道,但作为 COM2 它可以工作。我在 FreeBasic 文献中找不到关于 COMn 值的一些限制...有人知道吗?

4

1 回答 1

0

在 FreeBASIC 中使用串行端口的正确方法可以在下面看到

OPEN COM "COM7:9600,N,8,1,dt" AS 1 

主要参数是一个至少描述要打开哪个通信端口的字符串。它具有以下格式:

“Comn:[波特率][,[奇偶校验][,[data_bits][,[stop_bits][,[extended_options]]]]]”

其中,n 要打开的 Com 端口。“1”、“2”、“3”、“4”等。有些平台会支持更多的串口,具体取决于操作系统的配置方式。如果没有给出 n,“COM:”将映射到“COM1:”,除了在 Linux 上“COM:”映射到“/dev/modem”波特率“300”(默认)、“1200”、...、等奇偶校验“N”(无),“E”(偶数,默认),“O”(奇数),“S”(空格),“M”(标记),“PE”(QB-quirk:选中,偶校验)data_bits “5”、“6”、“7”(默认)或“8”。stop_bits “1”、“1.5”或“2”。

于 2022-03-01T19:59:19.370 回答