FYYX 发表于 2008-3-26 19:33

串口数据读取问题

请各位高手帮忙:在VFP中如何实时读取串口传来的数据,在VFP中有接收WINDOWS消息的办法吗

FYYX 发表于 2008-3-27 18:51

一个回答的都没有啊

hu9jj 发表于 2008-3-27 19:56

利用低级文件函数可以实现对串行端口的读写。

fown 发表于 2008-3-27 20:01

*ole1:MSCOMM32控件;
*SuperTracker:是一个接在串口上的设备;
*chr()中的值是该设备的指令。
Para nnnserr=0
Thisform.ole1.Output=Chr(2)+Chr(6)+Chr(3)
ltime=Datetime()
Do Whil Thisform.ole1.InBufferCount=0
If Datetime()-ltime>12
=msg("警告","得不到SuperTracker的控制信号。","!O")
Thisform.ole1.portopen=.F.
serr=1
Retu
Endif
Enddo
mscomm=Thisform.ole1.Input
If Str(mscomm(1),1)+Str(mscomm(2),1)+Str(mscomm(3),1)<>'263'
=msg("警告","得不到SuperTracker的控制信号。","!O")
Thisform.ole1.portopen=.F.
serr=1
Retu
Endif
Do Case
Case nnn=1
Thisform.ole1.Output=Chr(2)+Chr(35)+Chr(83)+Chr(3)
Case nnn=2
Thisform.ole1.Output=Chr(2)+Chr(35)+Chr(85)+Chr(3)
Case nnn=3
Thisform.ole1.Output=Chr(2)+Chr(35)+Chr(66)+Chr(3)
Endcase
ltime=Datetime()
Do Whil Thisform.ole1.InBufferCount=0
If Datetime()-ltime>20
=msg("警告","得不到SuperTracker的控制信号。","!O")
Thisform.ole1.portopen=.F.
serr=1
Retu
Endif
Enddo
mscomm=Thisform.ole1.Input
If Str(mscomm(1),1)+Str(mscomm(2),1)+Str(mscomm(3),1)<>'263'
Do Case
Case nnn=1
=msg("警告","SuperTracker无法进卡。","!O")
Case nnn=2
=msg("警告","SuperTracker卡在里面。","!O")
Case nnn=3
=msg("警告","SuperTracker卡在出口处。","!O")
Endcase
Thisform.ole1.portopen=.F.
serr=1
Retu
Endif

FYYX 发表于 2008-3-28 23:51

感谢二位的回答!低级文件函数读不了COM口的数据.FOWN先生的方法是可行的

fown 发表于 2008-3-29 18:05

我看了一下你发给我的文件,我个人认为,你应该先在VFP里声明DLL,然后调用DLL里的函数来进行连接,DLL说明里写的很清楚

页: [1]

编程论坛