Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Считать данные с COM1

367
29 декабря 2007 года
Meatcoins
303 / / 18.01.2006
Моя программуля что-то считывает с COM1, но неправильно считывает! Другая не моя программуля считывает правильно.
Код функции ниже. Функция вызывается при нажатии на кнопку в окне.
Если нажать другую кнопку, то поток закроет COM1 и файл, куда кидаются данные.
Вообще в файле data.txt полная фигня.
Данные идут от устройства.
Вначале устройство посылает строку: "Version 5.0", а потом данные.
Не моя программуля эту строку получает, а моя программуля эту строку получить не может - вместо неё какая-то ерунда - её вообще нет!
В чём ошибка???

Код:
.data
lpBuffer db "B",0h
lpBuffer2 db 0h,0h
handle_memo dd ?
dFlag dd ?
hCom dd ?
hFile_data dd ?
hEvent dd ?
nNumberOfBytesToWrite dd ?
lpNumberOfBytesWritten dd ?
lpOverlapped OVERLAPPED <?>
lpThreadId dd ?
lpThreadHandle dd ?
dExitCode dd ?
.code

portfunc PROTO :DWORD,:DWORD

portfunc proc open:DWORD,hWnd:DWORD
local _dcb:DCB
local dwWait:DWORD

mov handle_memo,eax

invoke CreateFile,offset checked_port,GENERIC_READ or GENERIC_WRITE,0h,0h,OPEN_EXISTING,FILE_FLAG_OVERLAPPED or FILE_ATTRIBUTE_NORMAL,0h
mov hCom,eax
invoke GetCommState,hCom,addr _dcb

push esi
lea esi,_dcb
assume esi:ptr DCB
mov [esi].BaudRate,CBR_19200
mov [esi].ByteSize,8h
mov [esi].Parity,NOPARITY
mov [esi].StopBits,ONESTOPBIT
assume esi:nothing
pop esi
invoke SetCommState,hCom, addr _dcb


invoke CreateEvent,0h,TRUE,FALSE,0h
mov hEvent,eax
mov lpOverlapped.hEvent,eax


comment @
TIMEOUT equ 100h
invoke WaitForSingleObject,hEvent,TIMEOUT
.if eax==WAIT_TIMEOUT
;invoke Sleep,100h
invoke Beep,100h,100h
.endif
@
mov edx,1h
mov dFlag,edx
mov nNumberOfBytesToWrite,1h
;mov lpBuffer2,0h

jmp over
again:
mov edx,dword ptr nNumberOfBytesToWrite
invoke ReadFile,hCom,offset lpBuffer2,edx,offset lpNumberOfBytesWritten,offset lpOverlapped
;invoke Sleep,1h

invoke WriteFile,hFile_data,offset lpBuffer2,nNumberOfBytesToWrite,offset lpNumberOfBytesWritten,0h
 
invoke SendMessage,handle_memo,WM_SETTEXT,1h,offset lpBuffer2

mov eax,dFlag
.if eax!=0h
jmp short again
.endif



exit_thread:

invoke CloseHandle,hEvent
invoke CloseHandle,hCom
invoke CloseHandle,hFile_data


invoke GetExitCodeThread,lpThreadHandle,offset dExitCode
.if eax!=0h
invoke MessageBox,0h,$CTA0("Поток завершается"),$CTA0("Поток завершается"),MB_OK
.else
invoke MessageBox,0h,$CTA0("Error"),$CTA0("Error"),MB_OK
.endif
invoke ExitThread,dExitCode




over:

invoke CreateFile,$CTA0("data.txt"),GENERIC_READ or GENERIC_WRITE,0h,0h,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0h
mov hFile_data,eax


invoke CreateThread,0h,0h,offset again,0h,0h,lpThreadId
mov lpThreadHandle,eax

ret
portfunc endp
25K
16 января 2008 года
jurabay
7 / / 19.03.2007
Чем компилил? Masmom? Дай полный техт с подключаемыми файлами,
проверим.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог