⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tty.h

📁 一个串行口通讯的例子程序
💻 H
字号:
/******************************************************************************\*       This is a part of the Microsoft Source Code Samples. *       Copyright (C) 1993 - 1997 Microsoft Corp.*       All rights reserved. *       This source code is only intended as a supplement to *       Microsoft Development Tools and/or WinHelp documentation.*       See these sources for detailed information regarding the *       Microsoft samples programs.\******************************************************************************/#define USECOMM      // yes, we need the COMM API//#undef NO_STRICT    // be bold!//#define HINSTANCE HANDLE#include <windows.h>#include <commdlg.h>#include <string.h>#include <io.h>#include <memory.h>#include "version.h"//#include "resource.h"// constant definitions#define GWL_NPTTYINFO        0#define TTYEXTRABYTES        sizeof( LONG )#define ABOUTDLG_USEBITMAP  1#define ATOM_TTYINFO       0x100// hard coded maximum number of ports for device under Win32#define MAXPORTS        4// terminal size#define MAXROWS         25#define MAXCOLS         80#define MAXBLOCK        80#define MAXLEN_TEMPSTR  81#define RXQUEUE         4096#define TXQUEUE         4096// cursor states#define CS_HIDE         0x00#define CS_SHOW         0x01// Flow control flags#define FC_DTRDSR       0x01#define FC_RTSCTS       0x02#define FC_XONXOFF      0x04// ascii definitions#define ASCII_BEL       0x07#define ASCII_BS        0x08#define ASCII_LF        0x0A#define ASCII_CR        0x0D#define ASCII_XON       0x11#define ASCII_XOFF      0x13// data structurestypedef struct tagTTYINFO{   HANDLE  idComDev ;   BYTE    bPort, abScreen[ MAXROWS * MAXCOLS ] ;   BOOL    fConnected, fXonXoff, fLocalEcho, fNewLine, fAutoWrap,           fUseCNReceive, fDisplayErrors;   BYTE    bByteSize, bFlowCtrl, bParity, bStopBits ;   DWORD   dwBaudRate ;   WORD    wCursorState ;   HFONT   hTTYFont ;   LOGFONT lfTTYFont ;   DWORD   rgbFGColor ;   int     xSize, ySize, xScroll, yScroll, xOffset, yOffset,           nColumn, nRow, xChar, yChar ;   HANDLE      hPostEvent, hWatchThread, hWatchEvent ;   HWND        hTermWnd ;   DWORD       dwThreadID ;   OVERLAPPED  osWrite, osRead ;} TTYINFO, NEAR *NPTTYINFO ;// macros ( for easier readability )#define GETHINST( x )  ((HINSTANCE) GetWindowLong( x, GWL_HINSTANCE ))#define GETNPTTYINFO( x ) ((NPTTYINFO) GetWindowLong( x, GWL_NPTTYINFO ))#define SETNPTTYINFO( x, y ) SetWindowLong( x, GWL_NPTTYINFO, (LONG) y )#define COMDEV( x ) (x -> idComDev)#define PORT( x )   (x -> bPort)#define SCREEN( x ) (x -> abScreen)#define CONNECTED( x ) (x -> fConnected)#define XONXOFF( x ) (x -> fXonXoff)#define LOCALECHO( x ) (x -> fLocalEcho)#define NEWLINE( x ) (x -> fNewLine)#define AUTOWRAP( x ) (x -> fAutoWrap)#define BYTESIZE( x ) (x -> bByteSize)#define FLOWCTRL( x ) (x -> bFlowCtrl)#define PARITY( x ) (x -> bParity)#define STOPBITS( x ) (x -> bStopBits)#define BAUDRATE( x ) (x -> dwBaudRate)#define CURSORSTATE( x ) (x -> wCursorState)#define HTTYFONT( x ) (x -> hTTYFont)#define LFTTYFONT( x ) (x -> lfTTYFont)#define FGCOLOR( x ) (x -> rgbFGColor)#define XSIZE( x ) (x -> xSize)#define YSIZE( x ) (x -> ySize)#define XSCROLL( x ) (x -> xScroll)#define YSCROLL( x ) (x -> yScroll)#define XOFFSET( x ) (x -> xOffset)#define YOFFSET( x ) (x -> yOffset)#define COLUMN( x ) (x -> nColumn)#define ROW( x ) (x -> nRow)#define XCHAR( x ) (x -> xChar)#define YCHAR( x ) (x -> yChar )#define USECNRECEIVE( x ) (x -> fUseCNReceive)#define DISPLAYERRORS( x ) (x -> fDisplayErrors)#define POSTEVENT( x ) (x -> hPostEvent)#define TERMWND( x ) (x -> hTermWnd)#define HTHREAD( x ) (x -> hWatchThread)#define THREADID( x ) (x -> dwThreadID)#define WRITE_OS( x ) (x -> osWrite)#define READ_OS( x ) (x -> osRead)#define SET_PROP( x, y, z )  SetProp( x, MAKEINTATOM( y ), z )#define GET_PROP( x, y )     GetProp( x, MAKEINTATOM( y ) )#define REMOVE_PROP( x, y )  RemoveProp( x, MAKEINTATOM( y ) )// global stuffHWND     hTTYWnd ;char     gszTTYClass[] = "TTYWndClass" ;char     gszAppName[] = "TTY" ;HANDLE   ghAccel ;DWORD    BaudTable[] =         {            CBR_110, CBR_300, CBR_600, CBR_1200, CBR_2400,            CBR_4800, CBR_9600, CBR_14400, CBR_19200, CBR_38400,            CBR_56000, CBR_128000, CBR_256000         } ;DWORD    ParityTable[] =         {            NOPARITY, EVENPARITY, ODDPARITY, MARKPARITY, SPACEPARITY         } ;DWORD    StopBitsTable[] =         {            ONESTOPBIT, ONE5STOPBITS, TWOSTOPBITS         } ;// CRT mappings to NT API#define _fmemset   memset#define _fmemmove  memmove// function prototypes (private)BOOL NEAR InitApplication( HANDLE ) ;HWND NEAR InitInstance( HANDLE, int ) ;LRESULT NEAR CreateTTYInfo( HWND ) ;BOOL NEAR DestroyTTYInfo( HWND ) ;BOOL NEAR ResetTTYScreen( HWND, NPTTYINFO ) ;BOOL NEAR KillTTYFocus( HWND ) ;BOOL NEAR PaintTTY( HWND ) ;BOOL NEAR SetTTYFocus( HWND ) ;BOOL NEAR ScrollTTYHorz( HWND, WORD, WORD ) ;BOOL NEAR ScrollTTYVert( HWND, WORD, WORD ) ;BOOL NEAR SizeTTY( HWND, WORD, WORD ) ;BOOL NEAR ProcessTTYCharacter( HWND, BYTE ) ;BOOL NEAR WriteTTYBlock( HWND, LPSTR, int ) ;int NEAR ReadCommBlock( HWND, LPSTR, int ) ;BOOL NEAR WriteCommBlock( HWND , LPSTR, DWORD);BOOL NEAR MoveTTYCursor( HWND ) ;BOOL NEAR OpenConnection( HWND ) ;BOOL NEAR SetupConnection( HWND ) ;BOOL NEAR CloseConnection( HWND ) ;VOID NEAR GoModalDialogBoxParam( HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM ) ;VOID NEAR FillComboBox( HINSTANCE, HWND, int, DWORD NEAR *, WORD, DWORD ) ;BOOL NEAR SelectTTYFont( HWND ) ;BOOL NEAR SettingsDlgInit( HWND ) ;BOOL NEAR SettingsDlgTerm( HWND ) ;// function prototypes (public)LRESULT FAR PASCAL TTYWndProc( HWND, UINT, WPARAM, LPARAM ) ;BOOL FAR PASCAL AboutDlgProc( HWND, UINT, WPARAM, LPARAM ) ;BOOL FAR PASCAL SettingsDlgProc( HWND, UINT, WPARAM, LPARAM ) ;DWORD FAR PASCAL CommWatchProc( LPSTR ) ;//---------------------------------------------------------------------------//  End of File: tty.h//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -