Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / WinForms, .Net Framework |
![]() ![]() |
jenya7 Member Откуда: Сообщений: 1349 |
Я посылаю в микроконтроллер комманду - прочитай мне с такого то адреса столько то байт. И я вижу что микроконтроллер возвращает мне 64 байта, количество которое я запросил. Но серийный порт читает только 5-7 байт.private int CPU_Read(uint address, int size, int offset, byte[] data) { int ticks = 0; int length = 0; int val, i = 0; if (size > data.Length) length = data.Length; else length = size; comport.DiscardInBuffer(); comport.DiscardOutBuffer(); //opcode read command[0] = CPU_CMD_READ; //address command[1] = (byte)(address); command[2] = (byte)(address >> 8); command[3] = (byte)(address >> 16); command[4] = (byte)(address >> 24); //length command[5] = (byte)length; comport.Write(command, 0, 6); while (comport.BytesToRead == 0) { Thread.Sleep(1); ticks++; if (ticks > 10000) return 0; } //comport.Read(data, offset, length); while (comport.BytesToRead > 0) { val = comport.ReadByte(); data[i] = (byte)val; i++; if (i > length) break; } return i; } Что не так в моём методе? |
5 апр 21, 15:11 [22304526] Ответить | Цитировать Сообщить модератору |
hVostt Member Откуда: Сообщений: 19144 |
не всегда удаётся прочитать видимо |
||||
5 апр 21, 22:25 [22304819] Ответить | Цитировать Сообщить модератору |
jenya7 Member Откуда: Сообщений: 1349 |
я прохожу это условие. но BytesToRead почему то 5 а не 64. |
||||||||
6 апр 21, 08:09 [22304881] Ответить | Цитировать Сообщить модератору |
hVostt Member Откуда: Сообщений: 19144 |
jenya7, попробуйте читать, используя события https://www.instructables.com/Serial-Port-Programming-With-NET/ |
6 апр 21, 08:48 [22304890] Ответить | Цитировать Сообщить модератору |
Все форумы / WinForms, .Net Framework | ![]() |