· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› программа работает в 9х, и не работает в NT(+)

Посл.отвђт Сообщен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