我目前正在将旧的vbs应用程序转换为c#应用程序,因此我可以提供更多功能。此应用程序的目的是扫描身份证并从中获取身份证。然后,我可以使用它通过CSV文件将数据导入门禁系统。
现在这是我的问题。当我使用vb应用程序通过COM端口扫描卡时,它的值为:
3E8783D0
我可以看到这种方法正常。但是,当我在c#中使用我的新程序并扫描条形码时,我得到以下输出:
2π E878 ????
所以我可以看到该卡正在扫描。但部分代码中填充了问号。
我已经考虑过改变波特率等,这是我能得到最有意义的数据。 COM端口的设置与旧的VB程序相同,所以我不会认为这不应该是一个问题吗?
我使用的编码如下所示。有人可以帮助解释问号出现的原因吗?我错过了一些明显的事吗?我正在使用的表格带有一个文本按钮和一个开始/停止按钮,以准备设备从接近传感器输入。
public Form1()
{
InitializeComponent();
}
private void buttonStart_Click(object sender, EventArgs e)
{
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 4800;
serialPort1.Parity = System.IO.Ports.Parity.None;
serialPort1.DtrEnable = true;
serialPort1.RtsEnable = false;
serialPort1.ReadTimeout = 500;
serialPort1.WriteTimeout = 500;
serialPort1.Open();
if (serialPort1.IsOpen)
{
buttonStart.Enabled = false;
buttonStop.Enabled = true;
textBox1.ReadOnly = false;
}
}
private void buttonStop_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
buttonStart.Enabled = true;
buttonStop.Enabled = false;
textBox1.ReadOnly = true;
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort1.IsOpen) serialPort1.Close();
}
private void DisplayText(object sender, EventArgs e)
{
textBox1.AppendText("!");
textBox1.AppendText(RxString);
}
private string ExtractPACID(string s)
{
return s.ToString() + "";
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
RxString = serialPort1.ReadExisting();
this.Invoke(new EventHandler(DisplayText));
}