Технический форум по робототехнике.
grek » 23 июл 2012, 09:17
Добрый день. Очень мучает вопрос по поводу вывода строки atmega 32 по usart. В кратце о работе программы.Подается команда по RS485 на контроллер и контроллер отвечает строкой , по прерыванию скорость 256000. Для записи в буфер используется функция sprintf,а для вывода используется puts. Так вот,запрос проходит нормально, в течении 10 мкс,и ответ до определенного времени тоже идет нормальный.Но через некоторое время происходит сбой,не понятный из-за чего, вместо ответа например 20 символов выводится 10 или другое количество,а потом остальные 10, и в течении двух циклов передач все восстанавливается.При уменьшении времени запроса 1 мкс запрос идет 20 символов ответ идет 25 потом 10 и так пока не стабилизируется на символ конца строки. Код сгенерирован на Codevision.B что только я не делал не как не могу найти в чем причина. Puts выводит массив b[18] массив всегда равен 18, но выводится разное количество символов и в чем проблема так и не понятно.В интернете вычитал, что не надо использовать sprintf и больше не каких решений.Может кто то поборол данную проблему, подскажите что можно попробовать.Код к сожелению выложить не могу.
- Код: Выделить всё • Развернуть
12705 0.00000107 ATerminal.exe IRP_MJ_READ VCP0 SUCCESS Length 18: 310000500000000d9.
12706 0.00000037 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
12707 0.01191881 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
12708 0.00000039 ATerminal.exe IRP_MJ_QUERY_INFORMATION VCP0 INVALID PARAMETER -1203161172
12709 0.00058559 ATerminal.exe IRP_MJ_WRITE VCP0 SUCCESS Length 14: @31AFFFFFF0289
12710 0.01989159 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
12711 0.00000067 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
12712 0.00000107 ATerminal.exe IRP_MJ_READ VCP0 SUCCESS Length 18: 310000500000000d9.
12713 0.00000038 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
12714 0.01088713 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
12715 0.00000039 ATerminal.exe IRP_MJ_QUERY_INFORMATION VCP0 INVALID PARAMETER -1203161172
12716 0.00030734 ATerminal.exe IRP_MJ_WRITE VCP0 SUCCESS Length 14: @31AFFFFFF0289
12717 0.02092554 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
12718 0.00000077 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
12719 0.00000102 ATerminal.exe IRP_MJ_READ VCP0 SUCCESS Length 18: 310000500000000d9.
12720 0.00000039 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
12721 0.01089661 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
12722 0.00000038 ATerminal.exe IRP_MJ_QUERY_INFORMATION VCP0 INVALID PARAMETER -1203161172
12723 0.00105721 ATerminal.exe IRP_MJ_WRITE VCP0 SUCCESS Length 14: @31AFFFFFF0289
12724 0.00491715 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
12725 0.00000073 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
12726 0.00000104 ATerminal.exe IRP_MJ_READ VCP0 SUCCESS Length 11: 31000050000
12727 0.00000039 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
12728 0.01592177 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
12729 0.00000092 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
12730 0.00000100 ATerminal.exe IRP_MJ_READ VCP0 SUCCESS Length 7: 0000d9.
12731 0.00000034 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
12732 0.00993693 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
12733 0.00000040 ATerminal.exe IRP_MJ_QUERY_INFORMATION VCP0 INVALID PARAMETER -1203161172
12734 0.00083158 ATerminal.exe IRP_MJ_WRITE VCP0 SUCCESS Length 14: @31AFFFFFF0289
12735 0.00589604 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
12736 0.00000071 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
12737 0.00000102 ATerminal.exe IRP_MJ_READ VCP0 SUCCESS Length 18: 310000500000000d9.
- Код: Выделить всё • Развернуть
223724 0.00000102 ATerminal.exe IRP_MJ_READ VCP0 SUCCESS Length 18: 310000500000000d9.
223725 0.00000036 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
223726 0.01092668 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
223727 0.00000037 ATerminal.exe IRP_MJ_QUERY_INFORMATION VCP0 INVALID PARAMETER -1204111444
223728 0.00097475 ATerminal.exe IRP_MJ_WRITE VCP0 SUCCESS Length 14: @31AFFFFFF0289
223729 0.00488052 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
223730 0.00000070 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
223731 0.00000107 ATerminal.exe IRP_MJ_READ VCP0 SUCCESS Length 19: 310000500000000d9.3
223732 0.00000036 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
223733 0.00989389 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
223734 0.00000194 ATerminal.exe IRP_MJ_QUERY_INFORMATION VCP0 INVALID PARAMETER -1204111444
223735 0.00028885 ATerminal.exe IRP_MJ_WRITE VCP0 SUCCESS Length 14: @31AFFFFFF0289
223736 0.00486446 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
223737 0.00000110 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
223738 0.00000207 ATerminal.exe IRP_MJ_READ VCP0 SUCCESS Length 26: 10000500000000d9.310000500
223739 0.00000034 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
223740 0.00988469 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
223741 0.00000037 ATerminal.exe IRP_MJ_QUERY_INFORMATION VCP0 INVALID PARAMETER -1204111444
223742 0.00070895 ATerminal.exe IRP_MJ_WRITE VCP0 SUCCESS Length 14: @31AFFFFFF0289
223743 0.00588003 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
223744 0.00000077 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
223745 0.00000116 ATerminal.exe IRP_MJ_READ VCP0 SUCCESS Length 26: 000000d9.310000500000000d9
223746 0.00000042 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
223747 0.00990908 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
223748 0.00000039 ATerminal.exe IRP_MJ_QUERY_INFORMATION VCP0 INVALID PARAMETER -1204111444
223749 0.00108969 ATerminal.exe IRP_MJ_WRITE VCP0 SUCCESS Length 14: @31AFFFFFF0289
223750 0.00589563 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
223751 0.00000071 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
223752 0.00000104 ATerminal.exe IRP_MJ_READ VCP0 SUCCESS Length 19: .310000500000000d9.
223753 0.00000036 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
223754 0.00891070 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
223755 0.00000038 ATerminal.exe IRP_MJ_QUERY_INFORMATION VCP0 INVALID PARAMETER -1204111444
223756 0.00046550 ATerminal.exe IRP_MJ_WRITE VCP0 SUCCESS Length 14: @31AFFFFFF0289
223757 0.00688917 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
223758 0.00000071 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
223759 0.00000099 ATerminal.exe IRP_MJ_READ VCP0 SUCCESS Length 18: 310000500000000d9.
223760 0.00000035 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
223761 0.00891543 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
223762 0.00000038 ATerminal.exe IRP_MJ_QUERY_INFORMATION VCP0 INVALID PARAMETER -1204111444
223763 0.00084176 ATerminal.exe IRP_MJ_WRITE VCP0 SUCCESS Length 14: @31AFFFFFF0289
Madf » 23 июл 2012, 10:48
Критические скорости, пропускает данные. Попробуйте уменьшить и понаблюдать. Видимо накапливается так смешения при передачи.
grek » 23 июл 2012, 11:23
я так понимаю,мнение что данные при запросе не принимаются.А почему иногда ответ больше положенного.Хотя массив вывода всегда равен например 20,даже если выводит 26 значений. А по скоростям, хотелось бы нормальных ответов на этой скорости. При уменьшении все будет совсем по другому,а мне нужна именно эта скорость.При уменьшении времени запроса до 100 мск ошибка почти исчезает.
boez » 23 июл 2012, 12:16
И вообще, уменьши код до такого состояния, что сможешь выложить (все секретное выкинь) и выложи.
grek » 23 июл 2012, 15:41
Хорошо попробую выложить,что возможно.
Добавлено спустя 2 часа 39 минут 6 секунд:вот что пока могу выложить
вывод строки по прерыванию
- Код: Выделить всё • Развернуть
// USART Transmitter buffer
#define TX_BUFFER_SIZE 124
char tx_buffer[TX_BUFFER_SIZE];
#if TX_BUFFER_SIZE<256
unsigned char tx_wr_index,tx_rd_index,tx_counter;
#else
unsigned int tx_wr_index,tx_rd_index,tx_counter;
#endif
#include <delay.h>
#pragma opt-
// USART Transmitter interrupt service routine
interrupt [USART_TXC] void usart_tx_isr(void)
{
// PORTB.5=1;
#asm("cli")
if (tx_counter)
{
--tx_counter;
UDR=tx_buffer[tx_rd_index];
if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;
} else
{
// delay_us(600);
// PORTB_OUT->bit5 = 0;
// delay_us(150);
// PORTB.5 = 0;
};
#asm("sei")
/*if (!tx_counter)
{
delay_ms(1);
PORTD.5=0;
}*/
}
#ifndef _DEBUG_TERMINAL_IO_
// Write a character to the USART Transmitter buffer
#define _ALTERNATE_PUTCHAR_
#pragma used+
void putchar(char c)
{
while (tx_counter == TX_BUFFER_SIZE);
#asm("cli")
if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))
{
tx_buffer[tx_wr_index]=c;
if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;
++tx_counter;
}
else
UDR=c;
#asm("sei")
}
#pragma used-
#endif
при принятии команды с компа переходит ответ на эту функцию(на нее переходит 100%)
- Код: Выделить всё • Развернуть
void vivod(void)
{
char b[40];
int a;
unsigned char c=0;
unsigned short CYL = (POSITION_CYL/(unsigned short)30);
if((CYL>999))
{
CYL = 0;
}
sprintf(b, "%c%c%04u%04u%03u%02x", n1, n2, o1, ((unsigned short)(POSITION/(unsigned short)1)), ((unsigned short)CYL), (UCHAR)(STAT.data[0]));
for (a=0; a<15; a++)
{ c=c+b[a];
}
sprintf(b+15, "%02x", c);
// #asm("cli")
PORTB.5 = 1;//разршение передачи RS485
puts(b);
delay_us(400);
// #asm("sei")
tx_counter=0;
PORTB.5 = 0;
}
ошибки в ответе приведены выше
uni » 24 июл 2012, 05:54
1. Непонятно как работают прерывания. Обычно приём ведётся по RXC, а передача по UDRE, то есть когда возникает это прерывание (putchar() должен быть там ). Таким образом развязываются по временной диаграмме приём и передача, кроме того на время приёма можно отключать передатчик, а на время передачи - приёмник.
2. Какой стоит кварц и как настроены UBRR регистры? Какая ошибка на такой скорости?
3. Никаких задержек в ISR быть вообще не должно. Они должны быть спроектированы так, чтобы выполнять по-минимуму действий: передача или приём байта, т.е. работу с буфером и всё.
4. Никаких sprintf() и прочих тяжёлых функций в ISR также быть не должно.
Вообще, я бы рекомендовал посмотреть как пишутся такие вещи в проекте
freemodbus, порт для AVR (ATmega168 там).
А в качестве монитора COM-порта использовать Serial Monitor 3.15
- Вложения
-
- Serial Monitor 3.15.zip
- Serial Monitor 3.15
- (3.23 МиБ) Скачиваний: 0
grek » 24 июл 2012, 09:23
А в качестве монитора COM-порта использовать Serial Monitor 3.15
Serial Monitor я использовал,только бесплатную версию.Спасибо за полноценную.И ответ идет в ней точно такой же как приведен выше.
2. Какой стоит кварц и как настроены UBRR регистры? Какая ошибка на такой скорости?
Кварц стоит 16.000 МГц имп. HC-49SM.
Ошибка на скорости составляет 2.1%. Это меня очень волнует,не из-за нее ли все проблемы.
- Код: Выделить всё • Развернуть
UCSRA=0x00;
UCSRB=0xD8;
UCSRC=0x86;
UBRRH=0x00;
////UBRRL=0x33;
UBRRL=0x03;
3. Никаких задержек в ISR быть вообще не должно. Они должны быть спроектированы так, чтобы выполнять по-минимуму действий: передача или приём байта, т.е. работу с буфером и всё.
задержек по сути нет,код сгенерирован генератором CV.
Никаких sprintf() и прочих тяжёлых функций в ISR также быть не должно.
По идее sprintf() только записывает в массив значение а выводит puts. Точнее putchar и прерывания по txd
Добавлено спустя 14 минут 3 секунды:- Код: Выделить всё • Развернуть
Запрос:24.07.2012 9:22:07.687500064 (+0.0156250000 seconds)
40 33 31 41 46 46 46 46 46 46 30 32 38 39 @31AFFFFFF0289
Ответ:24.07.2012 9:22:07.687500064 (+0.0000000000 seconds)
33 31 30 30 30 30 35 30 30 30 30 30 30 30 30 64 310000500000000d
39 0A 9.
Запрос:24.07.2012 9:22:07.703125064 (+0.0156250000 seconds)
40 33 31 41 46 46 46 46 46 46 30 32 38 39 @31AFFFFFF0289
Ответ:24.07.2012 9:22:07.703125064 (+0.0000000000 seconds)
33 31 30 30 30 30 35 30 30 30 30 30 30 30 30 64 310000500000000d
39 0A 33 31 30 30 30 30 35 30 9.31000050
Запрос:24.07.2012 9:22:07.718750064 (+0.0156250000 seconds)
40 33 31 41 46 46 46 46 46 46 30 32 38 39 @31AFFFFFF0289
Ответ:24.07.2012 9:22:07.718750064 (+0.0000000000 seconds)
30 30 30 30 30 30 30 64 39 0A 33 31 30 30 30 30 0000000d9.310000
35 30 30 30 30 30 30 5000000
Запрос:24.07.2012 9:22:07.734375064 (+0.0156250000 seconds)
40 33 31 41 46 46 46 46 46 46 30 32 38 39 @31AFFFFFF0289
Ответ:24.07.2012 9:22:07.734375064 (+0.0000000000 seconds)
30 30 64 39 0A 33 31 30 30 30 30 35 30 30 30 30 00d9.31000050000
30 30 30 30 64 39 0A 0000d9.
Запрос:24.07.2012 9:22:07.750000064 (+0.0156250000 seconds)
40 33 31 41 46 46 46 46 46 46 30 32 38 39 @31AFFFFFF0289
Ответ:24.07.2012 9:22:07.750000064 (+0.0000000000 seconds)
33 31 30 30 30 30 35 30 30 30 30 30 30 30 30 64 310000500000000d
39 0A 9.
Последний раз редактировалось
grek 24 июл 2012, 09:24, всего редактировалось 1 раз.
uni » 24 июл 2012, 09:23
Ошибка на скорости составляет 2.1%. Это меня очень волнует,не из-за нее ли все проблемы.
У вас же что-то там вроде импровизированного CRC есть в конце посылки? Лучше, конечно, использовать нормальную калькуляцию CRC из того же freemodbus'а для проверки достоверности посылки. Так вот разве она не показывает на нарушения в целостности данных? Если бы это были проблемы в передаче отдельных байт во фрейме, то это сразу бы стало ясно.
Вообще же, чтобы не мучится самописными вещами, можно использовать modbus. В элементарном виде он занимает 7 Кб флеша и около 400 байт ОЗУ. Для 32 меги это не так много. Зато можно пересылать фреймы до 252 байт в длину и со всеми проверками, плюс есть стандартные утилиты для работы с ним.
Вот тут есть хорошее описание с примерами:
ModBus AVR. Стандарт против протоколов-самоделокТам в файле:
ModBusAVR.rar
grek » 24 июл 2012, 09:46
Калькуляция crc не показывает, что данные потерялись,а в этой команде передается ответ и сама контрольная сумма.На компьютере это обрабатывается,но и хотелось чтоб ответ был нормальный. Может перед посылкой ответа проверять,что отправляю. Может кто подскажет как это делается?
Добавлено спустя 6 минут 52 секунды:
Мне вообще кажется,что почему то пропускается значения конца стоки и из-за этого происходит сбой.
Добавлено спустя 4 минуты 53 секунды:
И перед посылкой тоже проверить наверное не получится ведь я смотрю из скольки знаков состоит массив их например 18, а ответ в это время 26.
uni » 24 июл 2012, 09:49
Ещё могут влиять fuse-биты. Не помню точно как в ATmega32, но та тетрада, что отвечает за настройку работы с кварцем может влиять на работу по USART. У меня в примере на modbus тоже на 16 МГц никак не получалось добиться нормальной работы, пока не установил все единички в эти fuses.
Radist » 24 июл 2012, 10:46
Откуда взялась ошибка в 2%? Каждый битик аппаратным уартом делится именно на 16, проверяются три бита в середине. При таком кварце ошибка обязана быть нулевой. И в даташите (смотрим таблицы содержимого регистра скорости) написано, что ошибка нулевая.
2 uni: Слава, получил ли мое сообщение в личку?
uni » 24 июл 2012, 10:51
2 Radist: Женя, неа, не получил, а про 250K ты прав, однако.
grek » 24 июл 2012, 13:02
из datasheet 250k 3 0.0% 7 0.0%,
но у меня скорость 256000 и ошибка составляет 2.1%
Romikgy » 24 июл 2012, 13:48
имхо 2% это много ....
grek » 24 июл 2012, 13:56
Попробовал на 250000 , с 0% все тоже самое,ничего не поменялось.
- Код: Выделить всё • Развернуть
2 0.05082215 ATerminal.exe IRP_MJ_CREATE VCP0 SUCCESS Options: Open
3 0.00000166 ATerminal.exe IOCTL_SERIAL_SET_QUEUE_SIZE VCP0 SUCCESS InSize: 1024 OutSize: 1024
4 0.00000046 ATerminal.exe IOCTL_SERIAL_GET_BAUD_RATE VCP0 SUCCESS
5 0.00000058 ATerminal.exe IOCTL_SERIAL_GET_LINE_CONTROL VCP0 SUCCESS
6 0.00000039 ATerminal.exe IOCTL_SERIAL_GET_CHARS VCP0 SUCCESS
7 0.00000048 ATerminal.exe IOCTL_SERIAL_GET_HANDFLOW VCP0 SUCCESS
8 0.00293270 ATerminal.exe IOCTL_SERIAL_SET_BAUD_RATE VCP0 SUCCESS Rate: 250000
9 0.00299279 ATerminal.exe IOCTL_SERIAL_CLR_RTS VCP0 SUCCESS
10 0.00298473 ATerminal.exe IOCTL_SERIAL_CLR_DTR VCP0 SUCCESS
11 0.00299220 ATerminal.exe IOCTL_SERIAL_SET_LINE_CONTROL VCP0 SUCCESS StopBits: ERROR Parity: NONE WordLength: 8
12 0.00000051 ATerminal.exe IOCTL_SERIAL_SET_CHAR VCP0 SUCCESS EOF:dc ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
13 0.00297699 ATerminal.exe IOCTL_SERIAL_SET_HANDFLOW VCP0 SUCCESS Shake:0 Replace:0 XonLimit:256 XoffLimit:256
14 0.00000047 ATerminal.exe IOCTL_SERIAL_SET_TIMEOUTS VCP0 SUCCESS RI:-1 RM:0 RC:0 WM:100 WC:1000
15 0.00221913 ATerminal.exe IOCTL_SERIAL_SET_WAIT_MASK VCP0 SUCCESS Mask: RXCHAR RXFLAG TXEMPTY CTS DSR RLSD BRK
А вот с тем,что конец строки не видит тоже отпадает
- Код: Выделить всё • Развернуть
22409 0.00000075 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
22410 0.00000109 ATerminal.exe IRP_MJ_READ VCP0 SUCCESS Length 18: 310000500000000d9.
22411 0.00000039 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
22412 0.00688747 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
22413 0.00000038 ATerminal.exe IRP_MJ_QUERY_INFORMATION VCP0 INVALID PARAMETER -1288951892
22414 0.00072869 ATerminal.exe IRP_MJ_WRITE VCP0 SUCCESS Length 14: @31AFFFFFF0289
22415 0.02489437 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
22416 0.00000073 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
22417 0.00000106 ATerminal.exe IRP_MJ_READ VCP0 SUCCESS Length 18: 310000500000000d9.
22418 0.00000041 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
22419 0.00588408 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
22420 0.00000037 ATerminal.exe IRP_MJ_QUERY_INFORMATION VCP0 INVALID PARAMETER -1288951892
22421 0.00048010 ATerminal.exe IRP_MJ_WRITE VCP0 SUCCESS Length 14: @31AFFFFFF0289
22422 0.00989191 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
22423 0.00000076 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
22424 0.00000107 ATerminal.exe IRP_MJ_READ VCP0 SUCCESS Length 10: 3100005000
22425 0.00000037 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
22426 0.01592500 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
22427 0.00000071 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
22428 0.00000114 ATerminal.exe IRP_MJ_READ VCP0 SUCCESS Length 8: 00000d9.
22429 0.00000034 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
22430 0.00490007 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
22431 0.00000031 ATerminal.exe IRP_MJ_QUERY_INFORMATION VCP0 INVALID PARAMETER -1288951892
22432 0.00023137 ATerminal.exe IRP_MJ_WRITE VCP0 SUCCESS Length 14: @31AFFFFFF0289
22433 0.01089595 ATerminal.exe IOCTL_SERIAL_WAIT_ON_MASK VCP0 SUCCESS
22434 0.00000069 ATerminal.exe IOCTL_SERIAL_GET_COMMSTATUS VCP0 SUCCESS
22435 0.00000100 ATerminal.exe IRP_MJ_READ VCP0 SUCCESS Length 18: 310000500000000d9.