Я получаю информацию, читая карточку, но как мне получить номер тега как int?
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
if (!serialPort1.IsOpen)
{
serialPort1.Open();
serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
}
MessageBox.Show("Success");
}
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
textRFID.Text += indata;
}
Это строка, которую мне нужно проанализировать:
"RFID tag detected Tag Type:\tMifare One (S50) The tag's number is:\t235717311 Read Checksum:\t238 Calculated Checksum:\t238"
Благодаря @haldo я могу получить свой номер тега, но он выдает ошибку «ссылка на объект не установлена для экземпляра объекта», и я ставлю try catch, когда я нажимаю ok для ошибки, он идет и выводится так, как я хотел , Как мы можем удалить эту ошибку?
Вот мой код редактирования:
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
string contains = "The tag's number is:";
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
int tagNumber = 0;
try
{
indata.Split(Environment.NewLine.ToCharArray()) // split on newline chars
.FirstOrDefault(s => s.Contains(contains)) // get first string matching pattern above
.Split(':') // split on ':'
.FirstOrDefault(x => int.TryParse(x, out tagNumber)); // return first successful try parse
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
textRFID.Text = tagNumber.ToString();
}