/// <summary> /// 打开指定的端口 /// </summary> public bool OpenPort() { int openresult; tempport = UHFReaderConfigurations.UHFReader.COM.Trim(); portnum = Convert.ToInt32(tempport.Substring(3, tempport.Length - 3)); fComAdr = Convert.ToByte("FF", 16); frmcomportindex = portnum; for (int i = 6; i >= 0; i--) { fBaud = Convert.ToByte(i); if (fBaud == 3) { continue; } frmcomportindex = portnum; openresult = UHFReader18CSharp.OpenComPort(portnum, ref fComAdr, fBaud, ref frmcomportindex); if (openresult == 0) { MessageBox.Show("串口打开成功"); hasopen = true; break; } } return(hasopen); }
/// <summary> /// 询查标签 /// </summary> public void Inquiry() { int CardNum = 0; int Totallen = 0; byte[] EPC = new byte[5000]; string temps; byte AdrTID = 0; byte LenTID = 0; byte TIDFlag = 0; bool TIDInquiry = false; if (TIDInquiry == true) { AdrTID = Convert.ToByte("0", 16); LenTID = Convert.ToByte("3", 16); TIDFlag = 1; } else { AdrTID = 0; LenTID = 0; TIDFlag = 0; } fCmdRet = UHFReader18CSharp.Inventory_G2(ref fComAdr, AdrTID, LenTID, TIDFlag, EPC, ref Totallen, ref CardNum, frmcomportindex); if (fCmdRet == 1 | (fCmdRet == 2) | (fCmdRet == 3) | (fCmdRet == 4) | (fCmdRet == 0xFB))//代表查找结束 { byte[] daw = new byte[Totallen]; Array.Copy(EPC, daw, Totallen); temps = ByteArrayToHexString(daw); fInventory_EPC_List = temps;//存储标签记录 } }
/// <summary> /// 写入读写器地址 设置读写器功率 /// </summary> public void WriteReaderAddress() { try { int a; //记录读写器地址写入返回值 int b; //记录读写器功率设置返回值 int c; //记录读写器工作频率设置返回值 int d; //记录读写器串口波特率设置返回值 int e; //记录读写器询查命令最大响应时间设置返回值 byte newComAdr; byte powerDbm; byte scantime; byte dminfre; byte dmaxfre; byte band = 0; int dminIndex = 0; int dmaxIndex = 62; string address = UHFReaderConfigurations.UHFReader.Address.Trim(); newComAdr = Convert.ToByte(address); int power = Convert.ToInt32(UHFReaderConfigurations.UHFReader.Power.Trim()); int tempTime = Convert.ToInt32(UHFReaderConfigurations.UHFReader.MaximumResponseTime); int innquirtTime = tempTime / 100; scantime = Convert.ToByte(innquirtTime); powerDbm = Convert.ToByte(power); dminfre = Convert.ToByte(((band & 3) << 6) | (dminIndex & 0x3F)); dmaxfre = Convert.ToByte(((band & 0x0c) << 4) | (dmaxIndex & 0x3F)); if (hasopen) { a = UHFReader18CSharp.WriteComAdr(ref fComAdr, ref newComAdr, frmcomportindex); if (a == 0) { MessageBox.Show("读写器地址写入成功"); } b = UHFReader18CSharp.SetPowerDbm(ref fComAdr, powerDbm, frmcomportindex); if (b == 0) { MessageBox.Show("功率设置成功"); } c = UHFReader18CSharp.Writedfre(ref fComAdr, ref dmaxfre, ref dminfre, frmcomportindex); if (c == 0) { MessageBox.Show("读写器工作频率设置成功"); } d = UHFReader18CSharp.Writebaud(ref fComAdr, ref fBaud, frmcomportindex); if (d == 0) { MessageBox.Show("波特率设置成功"); } e = UHFReader18CSharp.WriteScanTime(ref fComAdr, ref scantime, frmcomportindex); if (e == 0) { MessageBox.Show("询查命令最大响应时间设置成功"); } } } catch (Exception) { } }
/// <summary> /// 设置工作模式参数 /// </summary> public void SetWorkModelParamter() { byte Wg_mode = 0; byte Wg_Data_Inteval; byte Wg_Pulse_Width; byte Wg_Pulse_Inteval; try { if (hasopen) { string wiegandOupt = UHFReaderConfigurations.UHFReader.WiegandOutputMode.Trim(); string wiegand = UHFReaderConfigurations.UHFReader.Wiegand.Trim(); string dataOutputInterval = UHFReaderConfigurations.UHFReader.DataOutputInterval.Trim(); string pulseInterval = UHFReaderConfigurations.UHFReader.PulseInterval; string pulseWidth = UHFReaderConfigurations.UHFReader.PulseWidth; int data_Inteval = Convert.ToInt32(dataOutputInterval); int pulse_Width = Convert.ToInt32(pulseWidth); int pulse_Inteval = Convert.ToInt32(pulseInterval); int dataIntervalIndex = 30; int pulseIntervalIndex = 15; int pulseWidthIndex = 10; if (wiegand == "韦根26" && wiegandOupt == "韦根输出低字节在前") { Wg_mode = 2; } else { Wg_mode = 0; } if (wiegand == "韦根34" && wiegandOupt == "韦根输出低字节在前") { Wg_mode = 3; } else { Wg_mode = 1; } Wg_Data_Inteval = Convert.ToByte(dataIntervalIndex); Wg_Pulse_Inteval = Convert.ToByte(pulseIntervalIndex); Wg_Pulse_Width = Convert.ToByte(pulseWidthIndex); int d = UHFReader18CSharp.SetWGParameter(ref fComAdr, Wg_mode, Wg_Data_Inteval, Wg_Pulse_Width, Wg_Pulse_Inteval, frmcomportindex); if (d == 0) { MessageBox.Show("韦根参数设置成功"); } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
/// <summary> /// 设置工作模式为应答模式 /// </summary> public void SetWorkModus() { try { if (hasopen) { byte[] parameter = new byte[6]; parameter[0] = Convert.ToByte(0); int e = UHFReader18CSharp.SetWorkMode(ref fComAdr, parameter, frmcomportindex); if (e == 0) { MessageBox.Show("应答模式设置成功"); } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
private void buttonConfirm_Click(object sender, EventArgs e) { try { string accessPwd = textBoxAceessCodes.Text.Trim(); string writeEPCNum = textBoxWriteEPC.Text.Trim(); byte[] WriteEPC = new byte[100]; byte WriteEPCLen; byte ENum; if (accessPwd.Length < 8) { MessageBox.Show("访问密码小于8位!请重新输入", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if ((writeEPCNum.Length % 4) != 0) { MessageBox.Show("请输入以字为单位的16进制数!'+#13+#10+'例如:1234、12345678!", "信息提示"); return; } WriteEPCLen = Convert.ToByte(writeEPCNum.Length / 2); ENum = Convert.ToByte(writeEPCNum.Length / 4); byte[] EPC = new byte[ENum]; EPC = HexStringToByteArray(writeEPCNum); fPassWord = HexStringToByteArray(accessPwd); fCmdRet = UHFReader18CSharp.WriteEPC_G2(ref fComAdr, fPassWord, EPC, WriteEPCLen, ref ferrorcode, frmcomportindex); if (fCmdRet == 0) { //StorageMaterials storageMaterials = new StorageMaterials(); StorageMaterials.storageMaterials.text_Rfid.Text = writeEPCNum; //StorageMaterials.storageMaterials.Show(); MessageBox.Show("写入成功!"); this.Close(); } } catch { } }