尝试使用 VB6 Winsock 连接到票务打印机

Posted

技术标签:

【中文标题】尝试使用 VB6 Winsock 连接到票务打印机【英文标题】:Trying to connect to Ticket Printer using VB6 Winsock 【发布时间】:2014-11-19 16:08:53 【问题描述】:

我正在尝试通过 TCP/IP 将数据从 VB6 程序发送到票据打印机。我发现尝试执行此操作的唯一 VB6 方法是使用 WinSock 控件。

我使用如下代码连接

 WinSock.Protocol = sckTCPProtocol
 WinSock.RemoteHost = txtIPAddress.Text
 WinSock.RemotePort = txtPort.Text
 WinSock.Connect

然后尝试如下发送数据

WinSock.SendData ("<F8>" & txtPrint.Text & "<p>")

每次我尝试这样做时,它都会失败,因为 Winsock.State 是 6(正在连接)。这只是保持连接,永远不会连接或失败。我可以在 VB6 之外使用此 IP/端口组合连接到打印机。有什么我可能做错了吗? WinSock 控件可以做到这一点吗?

在提供的 .net 程序中,这似乎是通过执行以下操作来完成的:

连接

            client = new TcpClient(ip_address, 9100);

            s = client.GetStream();  //s is System.Net.Sockets.NetworkStream
            s.ReadTimeout = 500;        //attempt to read for up to 0.5 seconds
            sr = new StreamReader(s);   //create read stream
            sw = new StreamWriter(s);   //create write stream
            sb = new BinaryWriter(s);   //create binary stream
            sw.AutoFlush = true;        //set write stream to flush data when < full buffer

发送:

sw.WriteLine(command);

谢谢。

【问题讨论】:

【参考方案1】:

你错过了概念。我记得 15 年前的事情。

Winsock 用于使用协议。您必须了解打印机协议。不仅仅是示例文本。

【讨论】:

我已经更新了我的原始问题,以显示它通过提供的 C# .net 测试程序进行交互的方式。我在vb6程序中发送的文本是一样的。 您需要的是为 vb6 翻译 c# 库。这就像尝试将 javascript 翻译成汇编程序。

以上是关于尝试使用 VB6 Winsock 连接到票务打印机的主要内容,如果未能解决你的问题,请参考以下文章

winsock多IP发送数据vb6

VB6 中的默认 WinSock 协议

VB6 连接到 WCF

将 JavaScript WebSocket 连接到 C winsock

当多个用户连接到数据库时,VB6 数据库操作变慢

使用 PuTTY 连接到 winsock 服务器时出现错误“收到的数据包上的填充长度无效”