public static extern int felicaDtu(int h, ushort srcAddr, ushort targetAddr, ref FELICA_DTU pDtu, Byte[] pTxFrame, Byte[] pRxFrame);
private void buttonDtu_Click(object sender, EventArgs e) { if (serialDevice < 0) { MessageBox.Show("请先打开串口"); return; } clearOpResult(); ushort[] addrArray = new ushort[2]; Byte[] rxLen = new Byte[1]; FELICA_DTU pDtu = new FELICA_DTU(); pDtu.txFrame = new Byte[hfReaderDll.HFREADER_BUFFER_MAX]; pDtu.rxFrame = new Byte[hfReaderDll.HFREADER_BUFFER_MAX]; Byte[] sendBuffer = new Byte[1024]; Byte[] rcvBuffer = new Byte[1024]; if (!GetDeviceAddr(addrArray)) { return; } if (GetHexInput(this.textBoxDtuRxLen.Text, rxLen, 1) <= 0) { return; } pDtu.rxLen = rxLen[0]; pDtu.txLen = (uint)(GetHexInput(this.textBoxDtuTx.Text, pDtu.txFrame)); pDtu.timeout = Convert.ToUInt32(this.textBoxDtuTime.Text, 10); while (bOperatingSerial) { ; } bOperatingSerial = true; int rlt = hfReaderDll.felicaDtu(serialDevice, addrArray[0], addrArray[1], ref pDtu, sendBuffer, rcvBuffer); bOperatingSerial = false; if (rlt > 0) { if (pDtu.result.flag == 0) { string s = ""; for (uint i = 0; i < pDtu.rxLen; i++) { s += pDtu.rxFrame[i].ToString("X").PadLeft(2, '0'); } this.textBoxDtuRx.Text = s; this.textBoxDtuRxLen.Text = pDtu.rxLen.ToString("X").PadLeft(2, '0'); } DisplayOpResult(ref pDtu.result); } DisplayRcvInf(rcvBuffer, "透传返回:"); DisplaySendInf(sendBuffer, "透传:"); }