无法从 'byte[]' 转换为 'byte*'
cannot convert from 'byte[]' to 'byte*'
我正在尝试将 arduino lib 转换为通用 windows 平台,但我有 byte[] 到 byte* 转换的股票。
例如:
public bool readCardSerial()
{
byte status;
byte[] str = new byte[MAX_LEN];
status = anticoll(str);
Array.Copy(serNum, str, 5);
return (status == MI_OK);
}
public unsafe byte anticoll(byte* serNum)
{
byte status;
byte i;
byte serNumCheck = 0;
uint unLen;
writeMFRC522(BitFramingReg, 0x00);
serNum[0] = PICC_ANTICOLL;
serNum[1] = 0x20;
status = MFRC522ToCard(PCD_TRANSCEIVE, serNum, 2, serNum, &unLen);
if (status == MI_OK)
{
for (i = 0; i < 4; i++)
serNumCheck ^= serNum[i];
if (serNumCheck != serNum[i])
status = MI_ERR;
}
return status;
}
readCardSerial 函数中的 str var 是这些错误之一。
如有必要,我在 github 上有我的代码 - https://github.com/watashimeandeu/rfid.uwp
谢谢
查看以下链接,它们回答了类似的问题:
How to assign byte[] as a pointer in C#
C# byte array to fixed int pointer
你需要这样的东西,在方法中接收一个byte[]
然后做赋值
fixed(byte *packet = packetArray)
{
... etc
}
我正在尝试将 arduino lib 转换为通用 windows 平台,但我有 byte[] 到 byte* 转换的股票。
例如:
public bool readCardSerial()
{
byte status;
byte[] str = new byte[MAX_LEN];
status = anticoll(str);
Array.Copy(serNum, str, 5);
return (status == MI_OK);
}
public unsafe byte anticoll(byte* serNum)
{
byte status;
byte i;
byte serNumCheck = 0;
uint unLen;
writeMFRC522(BitFramingReg, 0x00);
serNum[0] = PICC_ANTICOLL;
serNum[1] = 0x20;
status = MFRC522ToCard(PCD_TRANSCEIVE, serNum, 2, serNum, &unLen);
if (status == MI_OK)
{
for (i = 0; i < 4; i++)
serNumCheck ^= serNum[i];
if (serNumCheck != serNum[i])
status = MI_ERR;
}
return status;
}
readCardSerial 函数中的 str var 是这些错误之一。
如有必要,我在 github 上有我的代码 - https://github.com/watashimeandeu/rfid.uwp
谢谢
查看以下链接,它们回答了类似的问题:
How to assign byte[] as a pointer in C#
C# byte array to fixed int pointer
你需要这样的东西,在方法中接收一个byte[]
然后做赋值
fixed(byte *packet = packetArray)
{
... etc
}