发送命令给读卡器获取响应c#

时间:2013-07-03 09:49:45

标签: c#

我有一个读卡器,用于注册员工入口。它适用于离线和在线模式

离线意味着它存储所有数据(比如一个月),并且在通过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;
        }
}

1 个答案:

答案 0 :(得分:0)

嗯,TELNET是你必须遵守的协议。仅将TcpClient连接到TELNET端口并发送命令是不够的。

您可能希望看一下:http://social.msdn.microsoft.com/Forums/en-US/fd348022-7c71-4b08-9f94-999b18592d3e/developing-a-telnet-application-in-c