UPDATE讀取數據與RFID
我讀了,並簽署它的值到我textbox.text
。
它在我第一次通過我的卡片RFID Reader
時工作,但形成第二次通過卡片,而不是在我的textbox.text
上顯示整個卡片的ID,它只顯示卡片ID的最後一個字母。有時你可以看到整個數字在文本框中出現並消失得非常快,但從第二次通過卡時,只有最後一個字母保留在文本框中。
什麼可能導致此?
這裏是我當前的代碼:
using System;
using System.Windows.Forms;
using System.IO.Ports;
using System.Text;
using System.Text.RegularExpressions;
namespace RFID_Reader
{
public partial class PortaSerial : Form
{
private SerialPort porta_serial = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
public PortaSerial()
{
InitializeComponent();
}
private void PortaSerial_Load(object sender, EventArgs e)
{
try
{
if (porta_serial.IsOpen)
{
porta_serial.Close();
}
porta_serial.Open();
porta_serial.DtrEnable = true;
porta_serial.DataReceived += new SerialDataReceivedEventHandler(Recebe_Data);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
void Recebe_Data(object sender, SerialDataReceivedEventArgs e)
{
try
{
string oi = porta_serial.ReadExisting().ToString();
SetLabel(oi);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
void SetLabel(String s)
{
try
{
if (this.InvokeRequired)
{
this.Invoke(new Action<String>(SetLabel), s);
return;
}
textBox1.Text = RemoveSpecialCharacters(s);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
public static string RemoveSpecialCharacters(string str)
{
StringBuilder sb = new StringBuilder();
foreach (char c in str)
{
if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == '.' || c == '_')
{
sb.Append(c);
}
}
return sb.ToString();
}
}
}
我在哪裏打電話?在我的'DataReceived'中? 此外,我得到這個'沒有超載'SetLabel'匹配委託'System.Action'。在'this.Invoke(new Action(SetLabel),s);' – PlayHardGoPro 2013-05-14 19:01:06
是的,只要你需要寫入一些控件的數據。 – JeffRSon 2013-05-14 19:03:14
錯誤怎麼樣? = x – PlayHardGoPro 2013-05-14 19:05:42