CHRV wrote:З.Ы. Рекомендую проверить работу с Камилевской картой MC (имеется ввиду совместимость по RTS/CTS)
Карты нету у меня, а по сравнению с Унреалом - одинаково получается.
CHRV wrote:З.Ы. Рекомендую проверить работу с Камилевской картой MC (имеется ввиду совместимость по RTS/CTS)
DimkaM wrote:А то мну надо уже определится как процедуры писать.
DimkaM wrote:to deathsoft: У меня Унреал(0.37.5 и 0.37.6) СTS не принимает
deathsoft wrote:Выслал в мыло исправленную версию (сам не тестировал).
Вроде всё верно, по сути когда прога(Спековая)читает порт #FEEF, эмуль должен выдать значение из порта 06h ПиСюка. Можно с маской %00010001.deathsoft wrote:Посмотрел доку: Бит 4 - порта 6 это CTS, бит 0 порта 6 - это CTS delta (устанавливается при изменении CTS).
if (nreg == 6)
{
DWORD ModemStatus;
GetCommModemStatus(hPort, &ModemStatus);
u8 r6 = reg[6];
reg[6] &= ~(1 << 4);
reg[6] |= (ModemStatus & MS_CTS_ON) ? (1 << 4): 0;
reg[6] &= ~1;
reg[6] |= ((r6 ^ reg[6]) & (1 << 4)) >> 4;
result = reg[6];
}
Ну и загнул, походу твой мозг уже спал.deathsoft wrote:Вот фрагмент кода из унриала (функция unsigned char ISA_MODEM::read(unsigned nreg)) (может с чемто наебался, т.к. делал ночью):
if (nreg == 6)
{
DWORD ModemStatus;
GetCommModemStatus(hPort, &ModemStatus);
reg[6]= ((u8) ModemStatus)&%00010001;
result = reg[6];
}
if (nreg == 6)
{
DWORD ModemStatus;
GetCommModemStatus(hPort, &ModemStatus);
u8 r6 = reg[6] & MS_CTS_ON;
reg[6] = ((u8)ModemStatus) & MS_CTS_ON;
reg[6] |= (r6 ^ reg[6]) >> 4;
result = reg[6];
}
Я ж предупреждал что в С не силён. Твой код проанализировал, вроде всё правильно. Где затык х.з. Завтра на реальном СОМе проверю. Ща реальных ком портов нету у меня.deathsoft wrote:а твой заточен исключительно на то что они совпадают с битами порта. Более того ты еще и все биты порта обнуляешь вместо нужных.
Return to Пентева - софт и железо
Users browsing this forum: No registered users and 1 guest