再会
我正在尝试将数据发送到一个comport“COM1”。通用打印机驱动程序设置在 comport "COM1" 上。向此端口发送数据时,我收到运行时错误“8015:无法设置通信状态,可能存在一个或多个无效通信参数”。单击确定该错误消息后,我收到另一个错误,运行时错误'8018:仅当端口打开时操作才有效'。我相信这个问题可以解决,因为在命令提示符中我可以使用命令“copy C:\textfile.txt COM1”将文本文件复制到端口,并且它可以正常工作。这就是我的情况。
我尝试过的方法如下:
- 使用 MSComm 控件(产生上述错误)
- 使用 Windows API 调用(给出不同的错误“无效函数”)API 链接:http ://www.thescarms.com/vbasic/CommIO.aspx
- 使用 shell 函数通过“复制”命令对 cmd.exe 进行 shell(此方法在需要时有效)
- 使用复制到端口时不起作用的 VB6e FileCopy() 函数
我相信能回答这个问题的人是对COM端口通信有深入了解,对windows copy命令有深入了解的人。
我在某个论坛(我经历过太多)上读到,如果您卸下插头并将其插回,它可以解决此问题。我还没有尝试过,但是我尝试过关闭设备并将其放回原处,我认为这是同一回事。
如果有人可以帮助解决这个问题,将不胜感激
这是一个可能很有趣的链接:
谢谢,
约根
根据 Beaner 的要求:
这是我正在使用的代码片段。
Private Sub Initialize_COMPort()
On Error GoTo COMPort_Error
If MSComm1.PortOpen Then
MsgBox "Port is opened"
MSComm1.PortOpen = False
End If
MSComm1.Settings = "9600,n,8,1"
MSComm1.CommPort = Val(CbCOMPorts.ListIndex) + 1
MSComm1.PortOpen = True
MSComm1.RThreshold = 1
MSComm1.Handshaking = comXOnXoff
Exit Sub
COMPort_Error:
MsgBox Err.Number & " - " & Err.Description, vbCritical + vbOKOnly, "Port Tester", Err.HelpFile, Err.HelpContext
End Sub
错误发生在以下情况:
MSComm1.PortOpen = True
被执行。
@Hrqls 我很欣赏代码,但是您给我的代码与我的想法相似,并且在执行时错误仍然存在。错误发生在同一个语句
.PortOpen = True
@Hrqls 我之前没有尝试过使用打印机控件,但是该设备实际上不是文本打印机,它是卡片压花机。它是“Matica Z3i AF”压花机,我目前正在开发的程序将用于对卡片进行压花。
当前采用的方法是使用压花机是一个批处理文件,它基本上运行带有卡片信息的文本文件的“复制”命令,以压花机可以理解的格式打印。
在此之前,我将尝试使用打印机控件,感谢您的回复,如果问题得到解决,我会及时通知大家。