C# 写入rfid
writeByteArray是超出RFID标签限制的数据大小,我的老板说将其转换为ascii码,然后写入RFID 这种转换是否有助于减少数据的大小C# 写入rfid,c#,C#,writeByteArray是超出RFID标签限制的数据大小,我的老板说将其转换为ascii码,然后写入RFID 这种转换是否有助于减少数据的大小 如果不使用不同的RFID标签,还有其他方法吗?你的老板说要转换成ASCII,因为设备每字节读取信息。我使用这些设备,这是它们读取传递给它们的数据流的通常方式 在这方面没有任何分配好处,因为数据的大小保持不变,改变的是信息的重新表示。也就是说。你们的老板说要转换成ASCII,因为这个设备每字节读取信息一个字节。我使用这些设备,这是它们读取传递给它们的数
如果不使用不同的RFID标签,还有其他方法吗?你的老板说要转换成ASCII,因为设备每字节读取信息。我使用这些设备,这是它们读取传递给它们的数据流的通常方式
在这方面没有任何分配好处,因为数据的大小保持不变,改变的是信息的重新表示。也就是说。你们的老板说要转换成ASCII,因为这个设备每字节读取信息一个字节。我使用这些设备,这是它们读取传递给它们的数据流的通常方式
在这方面没有任何分配好处,因为数据的大小保持不变,改变的是信息的重新表示。也就是说。限制是标签可以存储的数据量,而不是用于与RFID控制器通信的协议。这是一个很难的设计限制,除了扔掉所有的标签,换一种不同的标签,你无法改变它。你必须找到一种更聪明的方法将信息编码成可用的比特,就像用一个字节对两个数字进行编码一样。@HansPassant是的,我正试图寻找更聪明的方法,但现在我找不到一个。……改变rfid的类型是一种选择,但它会增加项目的成本限制是标签可以存储的数据量,而不是你用来与rfid控制器对话的协议。这是一个很难的设计限制,除了扔掉所有的标签,换一种不同的标签,你无法改变它。你必须找到一种更聪明的方法将信息编码成可用的位,比如用一个字节来编码两个数字。@HansPassant是的,我正试图寻找一种更聪明的方法,但现在我找不到一种。……改变rfid的类型是一种选择,但它会增加项目的成本
public void writeToCard2(string sourceText, string cardType)
{
Cursor.Current = Cursors.WaitCursor;
int itemLength = sourceText.Split(',').Length;
sourceText = itemLength.ToString() + "," + sourceText + ",";
byte[] dataByteArray = Encoding.GetEncoding(932).GetBytes(sourceText);
//textBox2.Text = BitConverter.ToString(dataByteArray);
int dataByteLength = dataByteArray.Length;
int writeLength = dataByteLength + 11;
byte[] writeByteArray = new byte[writeLength];
writeByteArray[0] = 0x02;//STX
writeByteArray[1] = 0x00;//アドレス
writeByteArray[2] = 0x78;//コマンド
writeByteArray[3] = Convert.ToByte(dataByteLength + 4);//データ長
writeByteArray[4] = 0xa1;//詳細コマンド
writeByteArray[5] = 0x00;//書き込み開始ブロック番号
writeByteArray[6] = Convert.ToByte(dataByteLength);//書き込みバイト数
for (int i = 0; i < dataByteLength; i++)
{
writeByteArray[i + 7] = dataByteArray[i];//書き込みデータ
}
writeByteArray[dataByteLength + 7] = 0x40;//オプションフラグ
writeByteArray[dataByteLength + 8] = 0x03;//ETX
byte sum = 0x00;
for (int i = 0; i <= dataByteLength + 8; i++)
{
sum += writeByteArray[i];
}
writeByteArray[dataByteLength + 9] = sum;//SUM値
writeByteArray[dataByteLength + 10] = 0x0d;//CR
//string tempStr = BitConverter.ToString(writeByteArray);
//port.Write(writeByteArray, 0, writeByteArray.Length);
serialPort1.Write(writeByteArray, 0, writeByteArray.Length);
writeCardType = cardType;
Cursor.Current = Cursors.Default;
}
serialPort1.Write(writeByteArray, 0, writeByteArray.Length);