其中:typedef BYTE far *LPBYTE; typedef unsigned char BYTE; C#代码(自己编译的):
public unsafe bool WriteBfm(int nUnit, int addr, int nDevCnt, byte* data) {
byte[] buf = new byte[530]; fixed (byte* pbuf = buf) { fixed (byte* p = &buf[4]) { int i, n, byt; while (nDevCnt > 0) { if (m_nUartStopFlag != 0) return false;
byt = n * 2;//字节数 *p++ |= (byte)((byt >> 4) & 0xf); *p = (byte)((byt << 4) & 0xf0); //数据 for (i = 0; i < byt; i++) { int Q = *data++; *p++ |= (byte)((Q >> 4) & 0xf); *p = (byte)((Q << 4) & 0xf0); }
for (i = 0; i < MAX_UART_TRY; i++) { SendReq(pbuf, n * 4 + 9); if (WriteDevice_Ack()) break; if (m_nUartStopFlag != 0) return false; ReShakeHandle(1); } if (i == MAX_UART_TRY) return false; nDevCnt -= n; addr += byt; data += byt; } return true;
}
}
}
调试时报错:错误:“p”是一个“固定变量”,无法为它赋值 我想可能是我这行代码的原因: fixed (byte* p = &buf[4]) 不知该怎样修改,求教,谢谢。