Как я понял, запись в буфер происходит слишком быстро и код эмулятора не успевает.
Ну вот чего ему не хватает
если кому попадался этот тест с пунктом 6 (стык С2) поделитесь пожалуйста.
Последний раз редактировалось Vamos; 31.01.2013 в 04:14.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Patron, на этот вопрос у меня ответа нет, но вот код, может там чего
Код:if (m_SerialInCallback != NULL && frameticks % 416 == 0) { CFirstMemoryController* pMemCtl = (CFirstMemoryController*) m_pFirstMemCtl; if ((pMemCtl->m_Port176574 & 004) == 0) // Not loopback? { BYTE b; if (m_SerialInCallback(&b)) { if ((pMemCtl->m_Port176570 & 0200) == 0) // Ready? { pMemCtl->m_Port176572 = b; } else { pMemCtl->m_Port176570 |= 010000; // Set Overflow flag } pMemCtl->m_Port176570 |= 0200; // Set Ready flag } } } if (m_SerialOutCallback != NULL && frameticks % serialOutTicks == 0) { CFirstMemoryController* pMemCtl = (CFirstMemoryController*) m_pFirstMemCtl; if (serialTxCount > 0) { serialTxCount--; if (serialTxCount == 0) // Translation countdown finished - the byte translated { if ((pMemCtl->m_Port176574 & 004) == 0) // Not loopback? { (*m_SerialOutCallback)((BYTE)(pMemCtl->m_Port176576 & 0xff)); } else // Loopback { pMemCtl->m_Port176572 = pMemCtl->m_Port176576 & 0xff; pMemCtl->m_Port176570 |= 0200; // Set Ready flag } pMemCtl->m_Port176574 |= 0200; // Set Ready flag } } else if ((pMemCtl->m_Port176574 & 0200) == 0) // Ready is 0? { serialTxCount = 8; // Start translation countdown } }
У меня пока основная гипотеза -- что передача байт из эмулятора происходит без проверки того готов ли к этому COM-порт. Поэтому вероятно мы и видим overrun. Вообще общение с COM-портом у меня построено не на overlapped и не на событиях, а по более простой схеме -- чисто байтовое чтение и запись. При чтении если очередной байт не готов -- он не отдаётся. Но при записи пишется всё не взирая на возможные переполнения.
Кажется где-то под С2 было что-то отдельно написано, если откопаю-вспомню выложу сразу.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)