Компорты

Тема в разделе "WASM.ASSEMBLER", создана пользователем Dvuugl, 21 июн 2006.

  1. Dvuugl

    Dvuugl New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    9
    Адрес:
    Russia
    Как из винды отправить на компорт последовательность байт "qwerty123"? Как её получить в статическую напр. память?

    Первое, второе, третье..- суть, можно и без кода.

    Похоже ни в одном туториале этого нет. Может кто из мастодонтов микротутор типа для FAQа напишет или даже статью? А если статью, то может и про USB?

    Есть здесь исходник miniTerminal, но для BEGINNERа там это засыпано не относяшемся к собственно портам кодом.
     
  2. Bohdan200

    Bohdan200 New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2005
    Сообщения:
    134
    Адрес:
    Lviv



    Код (Text):
    1.  
    2. char Buf[]="qwerty123"
    3.  
    4. HANDLE hCom=CreateFile("\\\\.\\COM1"....);
    5. WriteFile(hCom, &Buf[0], 9, ...);
    6. CloseHandle(hCom);
    7.  
     
  3. Dvuugl

    Dvuugl New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    9
    Адрес:
    Russia
    Зацепка, спасибо. Никогда не требовалось, а тут вот..
     
  4. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Когдато я так открывал СОМ порты.
    Желаю удачи.
    Код (Text):
    1. Open_COMx   proc    hDlg:HWND
    2. LOCAL   dcb:DCB;, CommTimeouts:COMMTIMEOUTS
    3.  
    4.     .if hCOM
    5.         invoke CloseHandle,hCOM
    6.         mov     hCOM,       0
    7.     .endif
    8.    
    9.     mov     eax,        SC_.SC_SELECT
    10.     and     al,         011b
    11.     add     al,         '0'
    12.     mov     szCOMx+3,   al
    13.     invoke CreateFile,ADDR szCOMx,\
    14.         GENERIC_READ or GENERIC_WRITE ,\
    15.         NULL,NULL,OPEN_EXISTING,\
    16.         FILE_FLAG_OVERLAPPED,\
    17.         NULL  
    18.     .if eax==INVALID_HANDLE_VALUE
    19.         MsgBox hDlg,"Порт занят или отсутствует?",ADDR szCOMx,MB_OK or MB_ICONERROR
    20.         invoke PostMessage,hWnd,WM_COMMAND,IDM_SETCOM,0
    21.         mov     hCOM,       0
    22.     .else
    23.         mov     hCOM,       eax
    24.         invoke GetCommState,hCOM, addr dcb
    25.         .if !eax
    26.             MsgBox NULL,"GetCommState","Error",MB_OK or MB_ICONERROR
    27.         .else
    28.        
    29.             xor eax,eax
    30.             _fbits=0
    31.             _fbits=_fbits or TRUE SHL fBinary
    32.             _fbits=_fbits or TRUE SHL fBinary
    33.             _fbits=_fbits or FALSE SHL fParity
    34.             _fbits=_fbits or FALSE SHL fOutxCtsFlow
    35.             _fbits=_fbits or FALSE SHL fOutxDsrFlow
    36.             _fbits=_fbits or DTR_CONTROL_DISABLE SHL fDtrControl
    37.             ;_fbits=_fbits or DTR_CONTROL_ENABLE SHL fDtrControl
    38.             ;_fbits=_fbits or DTR_CONTROL_HANDSHAKE  SHL fDtrControl
    39.             _fbits=_fbits or FALSE SHL fDsrSensitivity
    40.             _fbits=_fbits or FALSE SHL fTXContinueOnXoff
    41.             _fbits=_fbits or FALSE SHL fOutX
    42.             _fbits=_fbits or FALSE SHL fInX
    43.             _fbits=_fbits or FALSE SHL fErrorChar
    44.             _fbits=_fbits or FALSE SHL fNull
    45.             _fbits=_fbits or RTS_CONTROL_DISABLE     SHL fRtsControl
    46.             ;_fbits=_fbits or RTS_CONTROL_ENABLE     SHL fRtsControl
    47.             ;_fbits=_fbits or RTS_CONTROL_HANDSHAKE  SHL fRtsControl
    48.             _fbits=_fbits or FALSE SHL fAbortOnError
    49.             mov dcb.fbits,_fbits
    50.                
    51.  
    52.             mov eax,            SC_.SC_BAUD
    53.             mov dcb.BaudRate,   eax
    54.             mov dcb.ByteSize,   8
    55.             mov dcb.Parity,     NOPARITY
    56.             mov dcb.StopBits,   ONESTOPBIT
    57.             invoke SetCommState,hCOM, addr dcb
    58.             .if !eax
    59.                 MsgBox NULL,"SetCommState","Error",MB_OK or MB_ICONERROR
    60.             .endif
    61.            
    62.             invoke SetCommTimeouts,hCOM,addr SC_.TO
    63.            
    64.             .if !eax
    65.                 MsgBox NULL,"CommTimeouts not set", "Error" ,MB_OK or MB_ICONERROR
    66.             .endif
    67.            
    68.             invoke EscapeCommFunction, hCOM, CLRDTR
    69.             invoke EscapeCommFunction, hCOM, CLRRTS
    70.            
    71.             invoke SetupComm,hCOM,64,64
    72.             .if !eax
    73.                 MsgBox NULL,"SetupComm not set", "Error" ,MB_OK or MB_ICONERROR
    74.             .endif
    75.            
    76.             mov eax,OFFSET ThreadUART
    77.             invoke CreateThread,NULL,NULL,eax,NULL,0,ADDR ThreadID
    78.             mov     hThreadUART,    eax
    79.             invoke SetThreadPriority,eax,THREAD_PRIORITY_LOWEST
    80.             invoke CloseHandle,eax
    81.             ;dsText szPOPN,"-=Порт открыт=-"
    82.             invoke SetDlgItemText,hWnd,IDC_IN_SMS,SADD ("-=Порт_открыт=-")
    83.         .endif
    84.     .endif
    85.    
    86.     ret                
    87. Open_COMx   endp