回 帖 发 新 帖 刷新版面

主题:QB串口问题请各位老师帮忙

我用QB的中断调用功能做别的编程好用,但串行口通讯不好用,用OPEN 语句也不好用,仔细检查程序编写发现不出问题,请各位老师指正。简单串口接收程序如下:
'c:\comn\INT.BI 的内容如下:
DEFINT A-Z
DECLARE SUB int86xold (intnumber%, inarray%(), outarray%())
DIM SHARED inarray(7)  AS INTEGER
DIM SHARED outarray(7)  AS INTEGER
CONST AX = 0, BX = 1, CX = 2, DX = 3
CONST BP = 4, SI = 5, DI = 6, FLAGS = 7

串行口接收程序COM.BAS如下:

'$INCLUDE: 'c:\comn\INT.BI'

SCREEN 0: CLS
inarray(DX) = 0
inarray(AX) = &H83 'COM1,1200,N,8,1
int86xold &H14, inarray(), outarray()
PRINT outarray(AX) '显示通讯口状态
DO
    inarray(DX) = 0
    inarray(AX) = &H200 '从串行口读
    int86xold &H14, inarray(), outarray()
    PRINT outarray(AX), '显示返回的数据
    key$ = INKEY$
LOOP UNTIL key$ = CHR$(27)

END

回复列表 (共5个回复)

沙发

用不着这么复杂,
     OPEN "com1:2400,n,8,1,CD0,DS0,RS " FOR RANDOM AS #1    ' ,rs,ds0,cd0
ON COM(X) '开中断
ON COM(X) GOSUB XXXX   '
接收
XXXX
lnn = INP(&H3FD):         
     IF lnn = 0 THEN 820
     bb = INP(&H3F8):
     dbdsz1$ = dbdsz1$ + CHR$(bb)
     IF LEN(dbdsz1$) = 16 THEN GOSUB 830:
'PRINT HEX$(bb);
RETURN
'串口发
     a = INP(&H3FD)   '读线路状态寄存器=32允许发送
     IF a = 0 THEN 840
     OUT &H3F8, b:     '@@@@@@@@@@ 发送寄存器 @@@@ 发送数据
''    PRINT HEX$(b); SPC(1);           '打印发送数据
     RETURN

板凳

比较复杂![em1][em18]

3 楼

如何用QB编2个以上的串口程序

4 楼

OPEN "com1
OPEN "com2
OPEN "com3
OPEN "com4
。。。。。

5 楼

OPEN "COM1...,OPEN "COM2...,可以,但是OPEN "COM3...,OPEN "COM4...,就不行了,3,4以上的串口要编程驱动,请哪位高手多指教,深表感谢!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册