Код: Выделить всё
private void button2_Click(object sender, EventArgs e)
{
byte[] BuferRx = Enumerable.Repeat<byte>(0x00, 3).ToArray();
var statement = Imports.CH341OpenDevice(0);
if ((int)statement != -1)
{
labelOpenSPI.Text = "устройство подключено";
labelIntSPI.Text = Imports.CH341SetStream(0, 0).ToString(); // устройство, настройки SPI
labelSpeedSPI.Text = Imports.CH341SetupSerial(0, 0, 100).ToString();
BuferRx[0] = ConvertBit(Data_Rx, 0);
BuferRx[1] = ConvertBit(Data_Rx, 1);
BuferRx[2] = ConvertBit(Data_Rx, 2);
labelDataSPI.Text = Imports.CH341StreamSPI4(0, 0, 3, BuferRx).ToString();
}
else labelOpenSPI.Text = "устройство не найдено";
}
labelOpenSPI.Text = "устройство подключено"
labelIntSPI.Text = true
labelSpeedSPI.Text = false
labelDataSPI.Text = false
Импорт из библиотеки такой
Код: Выделить всё
public class Imports
{
[DllImport("CH341DLL.dll")]
public static extern IntPtr CH341OpenDevice(uint iIndex);
[DllImport("CH341DLL.dll")]
public static extern IntPtr CH341CloseDevice(uint iIndex);
/*
шIndex // CH341 оборудование, указанное число 0 соответствует первому устройству
iParityMode // Режим проверки последовательной передачи данных CH341: NOPARITY / ODDPARITY / EVENPARITY / MARKPARITY / SPACEPARITY
iBaudRate // Значение скорости передачи последовательного порта. Может быть любое значение между 50 и 3000000
*/
[DllImport("CH341DLL.dll")]
public static extern bool CH341SetupSerial(uint iIndex, uint iParityMode, uint iBaudRate);
/*
iIndex - номер устройства
iMode - байт, который определяет следующее:
Bit [7]: - SPI byte bit order: 0 = LSB first, 1 = MSB first
Bit [2]: - SPI's I/O lines: 0 = single-input/ single-output (D3=clock / D5=out / D7=in) (default);
1 = double input/ double output: D3 clock / (D5=out D4=in) / (D7=in D6=out)
Bit [1:0] - speed: 00=20kHz, 01=100KHz, 10=400KHz, 11=750kHz
*/
[DllImport("CH341DLL.dll")]
public static extern bool CH341SetStream(uint iIndex, uint iMode);
/*
ULONG iIndex // CH341 оборудование, указанное число 0 соответствует первому устройству
ULONG iChipSelect // Выбор вывода CHIP_SELECT
ULONG iLength // Размер буфера в байтах от 0 до 32
ULONG ioBuffer // Буфер передаваемых данных
*/
[DllImport("CH341DLL.dll")]
public static extern bool CH341StreamSPI4(uint iIndex, uint iChipSelect, uint iLength, byte[] ioBuffer);
Добавлено after 2 hours 37 minutes 14 seconds:
Нашёл проблему, не установил CS. А конкретно в "labelSpeedSPI.Text = Imports.CH341SetupSerial(0, 0, 100).ToString();" должно быть "labelSpeedSPI.Text = Imports.CH341SetupSerial(0, 0x80, 100).ToString();"
Это включает СS для CS0 (0x81 для S1 и 0x82 для S2 соответственно).осталось порулить со скоростью.