/// <summary> /// 写卡 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void but_writecard_Click(object sender, RoutedEventArgs e) { deleageEditPwd = new DeleageEditPwd(delegate() { List <byte> byteList = new List <byte>(); //长度字 byteList.Add(0x00); byteList.Add(0x2D); //通讯地址 byteList.Add(0x00); //命令字 byteList.Add(0x2B); //数据域 byteList.Add(0x00); byteList.Add(0x10); byteList.Add(0x02); byteList.Add(0xF0); byteList.Add(0xE1); byteList.Add(0xD2); byteList.Add(0xC3); byteList.Add(0xB4); byteList.Add(0xA5); byte[] bytes = ASCIIEncoding.UTF8.GetBytes(text_write.Text.ToString()); byteList.AddRange(bytes); for (int i = bytes.Length; i < 32; i++) { byteList.Add(0x00); } //校验字 byteList.Add(XOR.GetByte(byteList.ToArray())); text_rData.AppendText(string.Join(" ", byteList.ConvertAll(new Converter <byte, string>(delegate(byte t) { string str = Convert.ToString(t, 16); return(str.Length % 2 != 0 ? "0" + str : str); }))) + "\r\n"); //实现接收委托 m_spr = new SerialPortReceive(delegate(string received) { this.Dispatcher.Invoke(new Action(delegate() { text_rData.AppendText(received + "\r\n"); //注意:回车换行必须这样写,单独使用"\r"和"\n"都不会有效果 string[] arr = received.Split(' '); if (Convert.ToByte(arr[3], 16) != byteList[3]) { MessageBox.Show("命令执行失败!", "error"); } else { MessageBox.Show("写卡成功!", "information"); } })); }); send(byteList.ToArray()); }); EditPwd(); }
/// <summary> /// 读卡 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void but_readcard_Click(object sender, RoutedEventArgs e) { deleageEditPwd = new DeleageEditPwd(delegate() { List <byte> byteList = new List <byte>(); //长度字 byteList.Add(0x00); byteList.Add(0x0D); //通讯地址 byteList.Add(0x00); //命令字 byteList.Add(0x2A); //数据域 byteList.Add(0x00); byteList.Add(0x10); byteList.Add(0x02); byteList.Add(0xF0); byteList.Add(0xE1); byteList.Add(0xD2); byteList.Add(0xC3); byteList.Add(0xB4); byteList.Add(0xA5); //校验字 byteList.Add(XOR.GetByte(byteList.ToArray())); text_rData.AppendText(string.Join(" ", byteList.ConvertAll(new Converter <byte, string>(delegate(byte t) { string str = Convert.ToString(t, 16); return(str.Length % 2 != 0 ? "0" + str : str); }))) + "\r\n"); //实现接收委托 m_spr = new SerialPortReceive(delegate(string received) { this.Dispatcher.Invoke(new Action(delegate() { text_rData.AppendText(received + "\r\n"); //注意:回车换行必须这样写,单独使用"\r"和"\n"都不会有效果 string[] arr = received.Split(' '); if (Convert.ToByte(arr[3], 16) != byteList[3]) { MessageBox.Show("读卡失败!", "error"); } else { string[] number = new string[18]; Array.Copy(arr, 4, number, 0, 18); byte[] bytes = number.ToList().ConvertAll(new Converter <string, byte>(delegate(string t) { return(Convert.ToByte(t, 16)); })).ToArray(); text_read.Text = ASCIIEncoding.ASCII.GetString(bytes); } })); }); send(byteList.ToArray()); }); EditPwd(); }