我正在向Lector设备发送数据。 通常,当我在hercules上发送信息时,我收到来自设备的数据。 大力士正在返回“sRA eExtIn1 0 0 0”。 以下代码具有等待行stream.Read()
的功能。 如何从设备获取数据?套接字接收数据未到。我在hercules上测试
string responseData = null;
using (TcpClient client = new TcpClient("10.1.13.102", 2111))
{
using (NetworkStream stream = client.GetStream())
{
byte[] sentData = System.Text.Encoding.ASCII.GetBytes("<STX>sRN eExtIn1<ETX>");
stream.Write(sentData, 0, sentData.Length);
byte[] buffer = new byte[32];
int bytes;
if (client.Connected)
{
while ((bytes = stream.Read(buffer, 0, buffer.Length)) != 0)
{
for (int i = 0; i < bytes; i++)
{
responseData += (char)buffer[i];
}
}
}
}
}
无关,但如果您所做的任何文档都告诉您发送STX/ETX,它们很可能意味着发送字节0x2/0x3而不是字符串。 –
你不是在等待回应。你假设1)回应将立即到来,2)你会一次收到全部答复。这两个假设都无效。您需要循环读取并继续阅读,直到您拥有完整的预期长度。您可能会在循环中需要一些超时逻辑。 –