|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Дек 18, 2003 17:19:25 · Поправил: Безпощадный даос Обращаюсь к Вам, Владыки секретов машинного кода и API функций Молю о помощи !!!!!! Написанна мною прога. по типу (см. ниже), и работает она в Windows 95, Windows 98(SE). А вот под Win XP, 2000, Me, работать отказывается. ЧТО-ЖЕ мне делать и где я мог ошибиться... ??????? ;serial.asm
;
;tasm32 /m /ml serial.asm
;tlink32 /Tpe /aa /x /c serial.obj
;
.586
.model flat,stdcall
.const
includelib import32.lib
extrn GetModuleHandleA:PROC
extrn ExitProcess:PROC
extrn MessageBoxA:PROC
extrn CreateFileA:PROC
extrn ReadFile:PROC
extrn WriteFile:PROC
extrn CloseHandle:PROC
extrn SetCommState:PROC
extrn GetCommState:PROC
extrn SetupComm:PROC
extrn PurgeComm:PROC
extrn SetCommTimeouts:PROC
extrn GetCommTimeouts:PROC
extrn SetLastError:PROC
extrn GetLastError:PROC
COMMTIMEOUTS struc
ReadIntervalTimeout dd ?
ReadTotalTimeoutMultiplier dd ?
ReadTotalTimeoutConstant dd ?
WriteTotalTimeoutMultiplier dd ?
WriteTotalTimeoutConstant dd ?
COMMTIMEOUTS ends
DCBS STRUC
DCBlength dd ? ; // sizeof(DCB)
BaudRate dd ? ; // current baud rate
fBinary dd ? ; // binary mode, no EOF check
fParity dd ? ; // enable parity checking
fOutxCtsFlow dd ? ; // CTS output flow control
fOutxDsrFlow dd ? ; // DSR output flow control
fDtrControl dd ? ; // DTR flow control type
fDsrSensitivity dd ? ; // DSR sensitivity
fTXContinueOnXoff dd ? ; // XOFF continues Tx
fOutX dd ? ; // XON/XOFF out flow control
fInX dd ? ; // XON/XOFF in flow control
fErrorChar dd ? ; // enable error replacement
fNull dd ? ; // enable null stripping
fRtsControl dd ? ; // RTS flow control
fAbortOnError dd ? ; // abort reads/writes on error
fDummy2 dd ? ; // reserved
wReserved dw ? ; // not currently used
XonLim dw ? ; // transmit XON threshold
XoffLim dw ? ; // transmit XOFF threshold
ByteSize db ? ; // number of bits/byte, 4-8
Parity db ? ; // 0-4=no,odd,even,mark,space
StopBits db ? ; // 0,1,2 = 1, 1.5, 2
XonChar db ? ; // Tx and Rx XON character
XoffChar db ? ; // Tx and Rx XOFF character
ErrorChar db ? ; // error replacement character
EofChar db ? ; // end of input character
EvtChar db ? ; // received event character
wReserved1 dw ? ; // reserved; do not use
DCBS ENDS
.data
hInst dd ?
titlesr db 'Программа SERIAL',0
error1 db 'Ошибка, COM порт занят !!!',0
error2 db 'Ошибка, COM порт отсутствует !!!',0
error3 db 'Ошибка, НЕТ ДАННЫХ !!!',0
string1 db 'Передача данных...',0
string2 db 'Принято '
rcbuf db 32 dup (0)
sddata db 'ATZ',0Dh,0Ah,0
flidcom dd ?
szCOM db 'COM2',0
sizerw dd ?
dcb DCBS <?>
twait COMMTIMEOUTS <?>
.code
start:
call GetModuleHandleA,0
mov hInst,eax
call MessageBoxA,0,offset string1,offset titlesr,0
call CreateFileA,offset szCOM,0C0000000h,0,0,3,40000080h,0
mov flidcom,eax
call GetLastError
cmp eax,5
jne SC2
call MessageBoxA,0,offset error1,offset titlesr,10h
jmp @closing
SC2: cmp eax,2
jne SC1
call MessageBoxA,0,offset error2,offset titlesr,10h
jmp @closing
SC1: cmp eax,0
jne @closing
jmp okport
@closing: call CloseHandle,flidcom
call SetLastError,0h
jmp exit
okport: mov dcb.DCBlength,size dcb
call GetCommState,flidcom,offset dcb ;Считать состояние порта
mov dcb.BaudRate,115200
mov dcb.ByteSize,8
mov dcb.Parity,0 ; // 0-4=no,odd,even,mark,space
mov dcb.StopBits,1 ; // 0,1,2 = 1, 1.5, 2
mov dcb.fRtsControl,1
mov dcb.fDtrControl,1
call SetCommState,flidcom,offset dcb ;Записать состояние порта
call SetupComm,flidcom,4096,4096 ; COMM_INBUFSIZE,COMM_OUTBUFSIZE
call PurgeComm,flidcom,0Fh
call GetCommTimeouts,flidcom,offset twait
mov twait.ReadIntervalTimeout,50
mov twait.ReadTotalTimeoutMultiplier,2
mov twait.ReadTotalTimeoutConstant,100
call SetCommTimeouts,flidcom,offset twait
call WriteFile,flidcom,offset sddata,5,offset sizerw,0
call ReadFile,flidcom,offset rcbuf,4,offset sizerw,0
cmp sizerw,4
jne errorrc
call MessageBoxA,0,offset string2,offset titlesr,0
exit: call CloseHandle,flidcom
call ExitProcess,0
errorrc: call MessageBoxA,0,offset error3,offset titlesr,10h
jmp exit
end start |
|
|
Дата: Дек 18, 2003 17:53:42 Ктото уже спрашивал об этом =) Типа не работает КОМ порт в ХР , дык там что-то с ACPI было связано ! короче поиск по форуму А вот ссылки по теме : http://www.wasm.ru/forum/index.php?action=vthread&forum=4&topic=4062 http://www.wasm.ru/forum/index.php?action=vthread&forum=7&topic=1110 |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.287 |