我有一个读卡器,用于注册员工入口。它在离线和在线模式下工作
离线意味着它存储所有数据(比如一个月),通过 telnet 连接到计算机后,管理员发送“读取”命令,阅读器将一个月内存储的所有数据发回。
在在线模式下,读卡器再次通过 telnet 连接到计算机,每当有人向读卡器出示卡时,读卡器就会发送数据,应用程序会立即显示结果。
我怎么能解决这个问题?我也使用过异步套接字,但效果不佳。
任何帮助表示赞赏。
private void button3_Click(object sender, EventArgs e)
{
string ip = Convert.ToString(IP_textBox.Text);
TcpClient telnet = new TcpClient();
telnet.Connect("172.16.0.133", 5010);
//sending "read" to Device
//string data = "read";
//byte[] recieveData = new byte [32768];
NetworkStream readStream = telnet.GetStream();
if (readStream.CanWrite)
{
byte[] readData = System.Text.Encoding.ASCII.GetBytes("read");
readStream.Write(readData, 0, readData.Length);
}
else
{
telnet.Close();
readStream.Close();
return;
}
if (readStream.CanRead)
{
byte[] recieveData = new byte[telnet.ReceiveBufferSize];
readStream.Read(recieveData, 0, (int)telnet.ReceiveBufferSize);
string out_string = Encoding.UTF8.GetString(recieveData);
// System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
//string out_string = enc.GetString(recieveData, 0, recieveData.Length);
MessageBox.Show("Im here");
}
else
{
telnet.Close();
readStream.Close();
return;
}
}