public USBXpress.ReturnCodes WriteRAW(int cmd, byte[] buff) { if (this.IsOpen()) { byte[] buffer = new byte[64]; const int max_payload = 64 - 4; // 64 (long paquete) - 4 (long. cabecera) int nbytes = 0; USBXpress.ReturnCodes ret = USBXpress.ReturnCodes.SI_SUCCESS; ClearInputBuffer(handle); buffer[0] = (byte)'A'; buffer[1] = (byte)'T'; buffer[2] = (byte)'C'; buffer[3] = (byte)cmd; for (int i = 0; i < max_payload && i < buff.Length; i++) { buffer[4 + i] = buff[i]; } ret = usbXpress.SI_Write(handle, buffer, OLEN, ref nbytes, 0); WaitACK_USB(); if (ret != USBXpress.ReturnCodes.SI_SUCCESS) { isOpen = false; } return(ret); } else { return(USBXpress.ReturnCodes.SI_WRITE_ERROR); } }
protected byte[] WriteRAW(int cmd, int addr, byte[] buff) { if (this.IsOpen()) { byte[] buffer = new byte[64]; const int max_payload = 32; int nbytes = 0; USBXpress.ReturnCodes ret = USBXpress.ReturnCodes.SI_SUCCESS; ClearInputBuffer(handle); buffer[0] = (byte)'F'; buffer[1] = (byte)'R'; buffer[2] = (byte)'M'; buffer[3] = (byte)cmd; buffer[4] = (byte)(addr & 0xff); buffer[5] = (byte)((addr >> 8) & 0xff); if (buff != null) { for (int i = 0; i < max_payload && i < buff.Length; i++) { buffer[6 + i] = buff[i]; } } ret = usbXpress.SI_Write(handle, buffer, OLEN, ref nbytes, 0); buffer = WaitACK_USB(); if (ret != USBXpress.ReturnCodes.SI_SUCCESS) { isOpen = false; } return(buffer); } else { return(null); } }