|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Май 7, 2004 14:59:43 Quantum Я лучше пойду искать рабочие примеры... и инфу собирать... Как получится послать запрос телефону и получить ответ, сразу отпишу! А про статус - отсутствие тем оформления решают многие вопросы, посему я тоже снес все темы... поставил старый вид окон и все вопросы относительно оформления у меня иссякли! Спасибо опять же! До связи и с праздниками! |
|
|
Дата: Май 14, 2004 13:33:53 Мое почтение ффсем заглянувшим "на огонек", а у меня опять заморочки... Вот код того, что не работает и никак не могу понять почему? .486 .model flat,stdcall option casemap:none include \masm32\include\shell32.inc include \masm32\include\masm32.inc include \masm32\include\kernel32.inc include \masm32\include\comctl32.inc include \masm32\include\comdlg32.inc include \masm32\include\user32.inc include \masm32\include\gdi32.inc include \masm32\include\windows.inc includelib \masm32\lib\masm32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib includelib \masm32\lib\gdi32.lib includelib \masm32\lib\comctl32.lib includelib \masm32\lib\comdlg32.lib includelib \masm32\lib\shell32.lib WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD .const IDM_FILE_EXIT equ 10001 IDM_HELP_ABOUT equ 10101 .data AppName db "ComX Test",0 comX db 'COM1';,0 data db 'atz',0 values db "baud=11500 parity=N data=8 stop=1",0 CreateProblem db "Не получается создать Handle",0 InitProblem db "Ошибка при инициализации порта",0 WriteProblem db "Не получается записать в порт",0 ReadProblem db "Не получается прочесть из порта",0 NoProblemz db "Порядок!",0 ClassName db 'DLGCLASS',0 MenuName db 'MyMenu',0 DlgName db 'MyDialog',0 ;AppName db 'Dialog as main',0 AboutMsg db 'MASM32 Dialog as main',13,10,'Copyright © MASM32 2001',0 .data? m_dcb DCB <?> m_CommTimeouts COMMTIMEOUTS <?> data2 db ? hcomm dd ? NrOfByte dd ? NrOfBytesRead dd ? dataPointer dd ? hInstance dd ? CommandLine dd ? hWnd dd ? .code start: invoke GetModuleHandle,NULL mov hInstance,eax invoke GetCommandLine invoke InitCommonControls invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT invoke ExitProcess,eax WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD LOCAL wc:WNDCLASSEX LOCAL msg:MSG mov wc.cbSize,SIZEOF WNDCLASSEX mov wc.style,CS_HREDRAW or CS_VREDRAW mov wc.lpfnWndProc,OFFSET WndProc mov wc.cbClsExtra,NULL mov wc.cbWndExtra,DLGWINDOWEXTRA push hInst pop wc.hInstance mov wc.hbrBackground,COLOR_BTNFACE+1 mov wc.lpszMenuName,OFFSET MenuName mov wc.lpszClassName,OFFSET ClassName invoke LoadIcon,NULL,IDI_APPLICATION mov wc.hIcon,eax mov wc.hIconSm,eax invoke LoadCursor,NULL,IDC_ARROW mov wc.hCursor,eax invoke RegisterClassEx,addr wc invoke CreateDialogParam,hInstance,addr DlgName,NULL,addr WndProc,NULL invoke ShowWindow,hWnd,SW_SHOWNORMAL invoke UpdateWindow,hWnd .while TRUE invoke GetMessage,addr msg,NULL,0,0 .BREAK .if !eax invoke TranslateMessage,addr msg invoke DispatchMessage,addr msg .endw mov eax,msg.wParam ret WinMain endp WndProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM mov eax,uMsg .if eax==WM_INITDIALOG push hWin pop hWnd .elseif eax==WM_COMMAND mov eax,wParam and eax,0FFFFh .if eax==IDM_FILE_EXIT invoke SendMessage,hWin,WM_CLOSE,0,0 .elseif eax==IDM_HELP_ABOUT invoke CreateFile,addr comX,GENERIC_READ or GENERIC_WRITE,0,0,OPEN_EXISTING,0,0 mov hcomm,eax .IF eax==INVALID_HANDLE_VALUE invoke MessageBox,NULL, addr CreateProblem,addr AppName,MB_OK jmp ENDCONNECT .ENDIF invoke GetCommTimeouts, hcomm,ADDR m_CommTimeouts .IF eax==0 ;invoke MessageBox,NULL, addr InitProblem,addr AppName,MB_OK .ENDIF invoke SetCommTimeouts, hcomm,ADDR m_CommTimeouts .IF eax==0 ;invoke MessageBox,NULL, addr InitProblem,addr AppName,MB_OK .ENDIF invoke BuildCommDCBAndTimeouts,ADDR values,ADDR m_dcb,ADDR m_CommTimeouts .IF eax==0 jmp problem1 .ENDIF invoke WriteFile,hcomm,ADDR data,sizeof data,ADDR NrOfByte,NULL ;invoke WriteFile,hcomm,ADDR data,sizeof data,NrOfByte,NULL .if eax==0 jmp problem2 .endif invoke ReadFile,hcomm,ADDR data2,NrOfByte,ADDR NrOfBytesRead,NULL ;invoke ReadFile,hcomm,ADDR data2,NrOfByte,NULL,NULL .if eax==0 jmp problem3 .endif invoke MessageBox,NULL, addr NoProblemz,addr AppName,MB_OK jmp ENDCONNECT problem1: invoke MessageBox,NULL, addr InitProblem,addr AppName,MB_OK jmp ENDCONNECT problem2: invoke MessageBox,NULL, addr WriteProblem,addr AppName,MB_OK jmp ENDCONNECT problem3: invoke MessageBox,NULL, addr ReadProblem,addr AppName,MB_OK jmp ENDCONNECT ENDCONNECT: invoke CloseHandle, hcomm invoke ExitProcess,0 ;invoke ShellAbout,hWin,addr AppName,addr AboutMsg,NULL .endif ; .elseif eax==WM_SIZE .elseif eax==WM_CLOSE invoke DestroyWindow,hWin .elseif uMsg==WM_DESTROY invoke PostQuitMessage,NULL .else invoke DefWindowProc,hWin,uMsg,wParam,lParam ret .endif xor eax,eax ret WndProc endp end start У меня вылетает "Не получается создать Handle", а почему, не знаю :о(( |
|
|
Дата: Май 14, 2004 13:36:09 Да, чуть не забыл, еще при сборке проги пишет вот что: Make finished. Assembling: commmm.asm \masm32\include\windows.inc(76) : error A2005: symbol redefinition : CHAR тут я вообще присел :о(( |
|
|
Дата: Май 14, 2004 18:46:09 Со связью разобрался... просто некому ответить было, девайс не был подключен, подключил, прога стала отправлять в порт данные (в моем случае "abcd"), а вот прочитать из порта не получается... т.е. возврат "0 символов". И еще у меня вопросик к знающим людям, где прочитать про эти функции: ReadIntervalTimeout ReadTotalTimeoutMultiplier ReadTotalTimeoutConstant WriteTotalTimeoutMultiplier WriteTotalTimeoutConstant... DCBlength... DCB ??? И как задается MASK-а (IOCTL_SERIAL_WAIT_ON_MASK)??? Вопросов больше, но на другие я постараюсь найти чтонибудь. Всем заранее спасибо! |
|
|
Дата: Май 14, 2004 19:02:11 · Поправил: Asterix Stenton Строку include \masm32\include\windows.inc лучше помещать первой в списке inc'лудов. |
|
|
Дата: Май 14, 2004 20:18:38 · Поправил: Stenton Asterix Спасиб, сделал, ща проверим! АГА, РАБОТАЕТ! :о)) Да, с ентим: ReadIntervalTimeout ReadTotalTimeoutMultiplier ReadTotalTimeoutConstant WriteTotalTimeoutMultiplier WriteTotalTimeoutConstant... ужжо разобрался :о)) |
|
|
Дата: Май 18, 2004 13:56:15 Ребята, выручайте!!! как этот код выглядит на масме: void CComportDlg::SetModem() //Настраиваем модем
{
BOOL bResult = TRUE;
m_sComPort = "Com1";
m_hCom = CreateFile(m_sComPort,
GENERIC_READ | GENERIC_WRITE,
0, // эксклюзивный доступ
NULL, // никакой безопасности :-)
OPEN_EXISTING,
0,
NULL);
m_bPortReady = SetupComm(m_hCom, 128, 128); // установка размера буфера
m_bPortReady = GetCommState(m_hCom, &m_dcb);
m_dcb.BaudRate = nBaudRate; //38400
m_dcb.ByteSize = nByteSize; //8
m_dcb.Parity = NOPARITY;
m_dcb.StopBits = ONESTOPBIT;
m_dcb.fAbortOnError = TRUE;
m_bPortReady = SetCommState(m_hCom, &m_dcb);
m_bPortReady = GetCommTimeouts (m_hCom, &m_CommTimeouts);
m_CommTimeouts.ReadIntervalTimeout = nReadIntervalTimeout; //50
m_CommTimeouts.ReadTotalTimeoutConstant = nReadTotalTimeoutConstant; //50
m_CommTimeouts.ReadTotalTimeoutMultiplier = nReadTotalTimeoutMultiplier; //10
m_CommTimeouts.WriteTotalTimeoutConstant = nWriteTotalTimeoutConstant; //50
m_CommTimeouts.WriteTotalTimeoutMultiplier = nWriteTotalTimeoutMultiplier; //10
m_bPortReady = SetCommTimeouts (m_hCom, &m_CommTimeouts);
sFirstCommand+="\r"; //AT&ATQ0
sSecondCommand+="\r"; //ATS7=20
// Первая команда
bWriteRC = WriteFile(m_hCom, (LPCVOID) sFirstCommand,
8, &iBytesWritten, NULL);
ReadPortData(); //Считываем ответ
if(sPortValue.Find("OK", 0) != -1) //Если вернулось "ОК" или "0"
{
//Вторая команда (тоже самое)
bWriteRC = WriteFile(m_hCom, (LPCVOID)sSecondCommand,
8, &iBytesWritten, NULL);
ReadPortData();
if(sPortValue.Find("OK", 0) == -1) bResult = FALSE;
}
else bResult = FALSE;
//Результат обеих команд
if(bResult) dlgRep.m_RepString="Modem initialization is OK";
else dlgRep.m_RepString="Modem initialization error occur";
CloseHandle(m_hCom);
m_uTimerID = SetTimer(0x451,1000,NULL);
dlgRep.DoModal(); //Окно с сообщением о результате
}
???? |
|
|
Дата: Май 19, 2004 18:48:35 Quantum Мне так не хватает Вашей помощи... Вопрос в том, что яне могу прочесть ответ модема, а именно - не знаю как выудить "ОК" или "ERROR" в ответе... или может модем не умею переводить в режим передачи. Другими словами, запутался окончательно... |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.048 |