尝试使用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";为1,但无法从Windows读取任何数据。
我怀疑FreeBasic与COMn有一些问题:;n〃;高于某个值。所以我真的破坏了设备管理器上的COM2,在几次重新启动后,我可以在设备管理器中看到COM2空闲,并将2分配给这个FTDI连接,瞧,正在工作。
我不知道它可能是其他东西,但作为COM2,它是有效的。我在FreeBasic文献中找不到关于COMn值的一些限制。。。有人知道什么吗?
使用FreeBASIC串行端口的正确方法可以在下面看到
OPEN COM "COM7:9600,N,8,1,dt" AS 1
主要参数是一个字符串,它至少描述了要打开的通信端口。它的格式是:
"Comn:[包数据][,[奇偶校验][,[数据比特][,[停止比特][,[extended_options]]]]";
其中,nCom端口打开"1〃"2〃"3〃"4〃;,等等。根据操作系统的配置方式,一些平台将支持更多的串行端口。在没有给出n的情况下;COM:";将映射到";COM1:";,除了在Linux上;COM:";映射到"/dev/modem";baudrate"300〃;(默认(,";1200〃。。。,等对等"N〃;(无(,";E〃;(甚至,默认(,";O〃;(奇数(,";S〃;(空格(;M〃;(标记(,";PE";(QB怪癖:勾选,奇偶校验(数据比特"5〃"6〃"7〃;(默认(或";8〃;。stop_bits"1〃"1.5〃;或";2〃;。