Commit 79df712cc29e31754be602b46fc3dcde516a24c1

Authored by xiemeng
1 parent b10c72d2

其他更新

... ... @@ -26,7 +26,7 @@
26 26 /*
27 27 Prototypes for functions called only in this file
28 28 */
29   -BOOL CALLBACK AboutDlgProc( HWND, UINT, WPARAM, LPARAM );
  29 +//BOOL CALLBACK AboutDlgProc( HWND, UINT, WPARAM, LPARAM );
30 30 UINT InitAboutDlg( HWND );
31 31
32 32 /*-----------------------------------------------------------------------------
... ... @@ -39,11 +39,11 @@ PARAMETERS:
39 39 PURPOSE: Creates the modal About dialog
40 40
41 41 -----------------------------------------------------------------------------*/
42   -BOOL CmdAbout(HWND hwnd)
43   -{
44   - DialogBox(ghInst, MAKEINTRESOURCE(IDD_ABOUT), hwnd, AboutDlgProc);
45   - return 0;
46   -}
  42 +//BOOL CmdAbout(HWND hwnd)
  43 +//{
  44 +// DialogBox(ghInst, MAKEINTRESOURCE(IDD_ABOUT), hwnd, AboutDlgProc);
  45 +// return 0;
  46 +//}
47 47
48 48 /*-----------------------------------------------------------------------------
49 49
... ... @@ -102,47 +102,47 @@ HISTORY: Date: Author: Comment:
102 102 10/27/95 AllenD Wrote it
103 103
104 104 -----------------------------------------------------------------------------*/
105   -BOOL CALLBACK AboutDlgProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lparam)
106   -{
107   - static UINT uTimer;
108   - static WORD wCurrentIconId;
109   -
110   - switch(uMessage)
111   - {
112   - case WM_INITDIALOG:
113   - uTimer = InitAboutDlg(hdlg);
114   - wCurrentIconId = IDI_APPICON;
115   - break;
116   -
117   - case WM_TIMER:
118   - /*
119   - when timer goes off, then change to next icon
120   - */
121   - {
122   - HICON hIcon;
123   -
124   - switch(wCurrentIconId)
125   - {
126   - case IDI_APPICON: wCurrentIconId = IDI_APPICON2; break;
127   - case IDI_APPICON2: wCurrentIconId = IDI_APPICON3; break;
128   - case IDI_APPICON3: wCurrentIconId = IDI_APPICON4; break;
129   - case IDI_APPICON4: wCurrentIconId = IDI_APPICON; break;
130   - }
131   -
132   - hIcon = LoadIcon(ghInst, MAKEINTRESOURCE(wCurrentIconId));
133   - SendMessage(GetDlgItem(hdlg, IDC_PICTURE), STM_SETICON, (WPARAM) hIcon, 0);
134   - }
135   - break;
136   -
137   - case WM_COMMAND:
138   - if (LOWORD(wparam) == IDOK) {
139   - KillTimer(hdlg, uTimer);
140   - EndDialog(hdlg, TRUE);
141   - return TRUE;
142   - }
143   - break;
144   - }
145   -
146   - return FALSE;
147   -}
  105 +//BOOL CALLBACK AboutDlgProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lparam)
  106 +//{
  107 +// static UINT uTimer;
  108 +// static WORD wCurrentIconId;
  109 +//
  110 +// switch(uMessage)
  111 +// {
  112 +// case WM_INITDIALOG:
  113 +// uTimer = InitAboutDlg(hdlg);
  114 +// wCurrentIconId = IDI_APPICON;
  115 +// break;
  116 +//
  117 +// case WM_TIMER:
  118 +// /*
  119 +// when timer goes off, then change to next icon
  120 +// */
  121 +// {
  122 +// HICON hIcon;
  123 +//
  124 +// switch(wCurrentIconId)
  125 +// {
  126 +// case IDI_APPICON: wCurrentIconId = IDI_APPICON2; break;
  127 +// case IDI_APPICON2: wCurrentIconId = IDI_APPICON3; break;
  128 +// case IDI_APPICON3: wCurrentIconId = IDI_APPICON4; break;
  129 +// case IDI_APPICON4: wCurrentIconId = IDI_APPICON; break;
  130 +// }
  131 +//
  132 +// hIcon = LoadIcon(ghInst, MAKEINTRESOURCE(wCurrentIconId));
  133 +// SendMessage(GetDlgItem(hdlg, IDC_PICTURE), STM_SETICON, (WPARAM) hIcon, 0);
  134 +// }
  135 +// break;
  136 +//
  137 +// case WM_COMMAND:
  138 +// if (LOWORD(wparam) == IDOK) {
  139 +// KillTimer(hdlg, uTimer);
  140 +// EndDialog(hdlg, TRUE);
  141 +// return TRUE;
  142 +// }
  143 +// break;
  144 +// }
  145 +//
  146 +// return FALSE;
  147 +//}
148 148
... ...
... ... @@ -85,45 +85,40 @@ HISTORY: Date: Author: Comment:
85 85 -----------------------------------------------------------------------------*/
86 86 void ErrorReporter(char * szMessage)
87 87 {
88   - char * szFormat = "Error %d: %s.\n\r%s\r\n"; // format for wsprintf
89   - char * szExtended; // error string translated from error code
90   - char * szFinal; // final string to report
91   - DWORD dwExtSize;
92   - DWORD dwErr;
93   -
94   - dwErr = GetLastError();
95   -
96   - /*
97   - Get error string from system
98   - */
99   - dwExtSize = ErrorExtender(dwErr, &szExtended);
100   -
101   - /*
102   - allocate buffer for error string from system, passed in string
103   - and extra stuff from the szFormat string
104   - */
105   - szFinal = LocalAlloc(LPTR, strlen(szMessage) + dwExtSize + 30);
106   -
107   - if (szFinal == NULL) // if no final buffer, then can't format error
108   - MessageBox(ghwndMain, "Cannot properly report error.", "Fatal Error", MB_OK);
109   - else {
110   - wsprintf(szFinal, szFormat, dwErr, szMessage, szExtended);
111   -
112   - OutputDebugString(szFinal);
113   -
114   - if (DISPLAYERRORS(TTYInfo))
115   - MessageBox(ghwndMain, szFinal, NULL, MB_OK);
116   -
117   - LocalFree(szFinal); // free final buffer
118   - }
  88 + char * szFormat = "Error %d: %s.\n\r%s\r\n"; // format for wsprintf
  89 + char * szExtended; // error string translated from error code
  90 + char * szFinal; // final string to report
  91 + DWORD dwExtSize;
  92 + DWORD dwErr;
  93 + dwErr = GetLastError();
  94 + /* Get error string from system */
  95 + dwExtSize = ErrorExtender(dwErr, &szExtended);
  96 + /* allocate buffer for error string from system, passed in string and extra stuff from the szFormat string */
  97 + szFinal = LocalAlloc(LPTR, strlen(szMessage) +dwExtSize + 30);
  98 + if (szFinal == NULL) // if no final buffer, then can't format error
  99 + {
  100 + TTYInfo.rgbBGColor = RGB(255, 50, 50);
  101 + OutputABuffer("Cannot properly report error. \r\n");
  102 + //MessageBox(ghwndMain, "Cannot properly report error.", "Fatal Error", MB_OK);
  103 + }
  104 + else
  105 + {
  106 + wsprintf(szFinal, szFormat, dwErr, szMessage, szExtended);
  107 + OutputDebugString(szFinal);
  108 + if (DISPLAYERRORS(TTYInfo))
  109 + {
  110 + TTYInfo.rgbBGColor = RGB(255, 50, 50);
  111 + OutputABuffer(szFinal);
  112 + //MessageBox(ghwndMain, szFinal, NULL, MB_OK);
  113 + }
  114 + LocalFree(szFinal); // free final buffer
  115 + }
  116 + /* free extended string buffer */
  117 + LocalFree(szExtended);
  118 + return;
  119 +}
119 120
120   - /*
121   - free extended string buffer
122   - */
123   - LocalFree(szExtended);
124 121
125   - return;
126   -}
127 122
128 123
129 124 /*-----------------------------------------------------------------------------
... ...
... ... @@ -51,11 +51,11 @@ DWORD WaitForThreads( DWORD );
51 51 */
52 52 COMMTIMEOUTS gTimeoutsDefault = { 0x01, 0, 0, 0, 0 };
53 53
54   -extern char szFileName[MAX_PATH];
  54 +//extern char szFileName[MAX_PATH];
55 55
56 56 void oem_init(void)
57 57 {
58   - memset(szFileName,0,sizeof(szFileName));
  58 + //memset(szFileName,0,sizeof(szFileName));
59 59 }
60 60
61 61
... ... @@ -74,8 +74,9 @@ HISTORY: Date: Author: Comment:
74 74 void GlobalInitialize()
75 75 {
76 76 int cyMenuHeight, cyCaptionHeight, cyFrameHeight;
  77 + memset(TTYInfo.szFileName,0,sizeof(TTYInfo.szFileName));
77 78
78   - oem_init();
  79 + //oem_init();
79 80 //
80 81 // critical sections in status reporting & node management
81 82 //
... ... @@ -197,7 +198,9 @@ void InitNewFont(LOGFONT LogFont, COLORREF rgbColor)
197 198 LFTTYFONT(TTYInfo) = LogFont;
198 199 HTTYFONT(TTYInfo) = CreateFontIndirect(&(LFTTYFONT(TTYInfo)));
199 200 FGCOLOR(TTYInfo) = rgbColor;
200   -
  201 +#if 1//def __TOPWELL_EDIT__
  202 + TTYInfo.rgbBGColor = RGB(255,255,255);
  203 +#endif
201 204 hDC = GetDC( ghwndMain ) ;
202 205 SelectObject( hDC, HTTYFONT( TTYInfo ) ) ;
203 206 GetTextMetrics( hDC, &tm ) ;
... ... @@ -238,7 +241,7 @@ BOOL InitTTYInfo()
238 241 LOCALECHO( TTYInfo ) = FALSE ;
239 242 CURSORSTATE( TTYInfo ) = CS_HIDE ;
240 243 PORT( TTYInfo ) = 1 ;
241   - BAUDRATE( TTYInfo ) = BaudTable[2] ;
  244 + BAUDRATE( TTYInfo ) = 921600;
242 245 BYTESIZE( TTYInfo ) = 8 ;
243 246 PARITY( TTYInfo ) = NOPARITY ;
244 247 STOPBITS( TTYInfo ) = ONESTOPBIT ;
... ... @@ -251,22 +254,13 @@ BOOL InitTTYInfo()
251 254 COLUMN( TTYInfo ) = 0 ;
252 255 ROW( TTYInfo ) = MAXROWS - 1 ;
253 256 DISPLAYERRORS( TTYInfo ) = TRUE ;
254   -
255   - //
256 257 // timeouts
257   - //
258 258 TIMEOUTSNEW( TTYInfo ) = gTimeoutsDefault;
259   -
260   - //
261 259 // read state and status events
262   - //
263 260 gdwReceiveState = RECEIVE_TTY;
264 261 EVENTFLAGS( TTYInfo ) = EVENTFLAGS_DEFAULT;
265 262 FLAGCHAR( TTYInfo ) = FLAGCHAR_DEFAULT;
266   -
267   - //
268 263 // Flow Control Settings
269   - //
270 264 DTRCONTROL( TTYInfo ) = DTR_CONTROL_ENABLE;
271 265 RTSCONTROL( TTYInfo ) = RTS_CONTROL_ENABLE;
272 266 XONCHAR( TTYInfo ) = ASCII_XON;
... ... @@ -285,10 +279,7 @@ BOOL InitTTYInfo()
285 279 NOEVENTS(TTYInfo) = FALSE;
286 280 NOSTATUS(TTYInfo) = FALSE;
287 281 SHOWTIMEOUTS(TTYInfo) = FALSE;
288   -
289   - //
290 282 // setup default font information
291   - //
292 283 LFTTYFONT( TTYInfo ).lfHeight = 20 ;
293 284 LFTTYFONT( TTYInfo ).lfWidth = 0 ;
294 285 LFTTYFONT( TTYInfo ).lfEscapement = 0 ;
... ... @@ -302,6 +293,7 @@ BOOL InitTTYInfo()
302 293 LFTTYFONT( TTYInfo ).lfClipPrecision = CLIP_DEFAULT_PRECIS ;
303 294 LFTTYFONT( TTYInfo ).lfQuality = DEFAULT_QUALITY ;
304 295 LFTTYFONT( TTYInfo ).lfPitchAndFamily = FIXED_PITCH | FF_MODERN ;
  296 + TTYInfo.DownloadReday = FALSE;
305 297 strcpy( LFTTYFONT( TTYInfo ).lfFaceName, "FixedSys" ) ;
306 298 // strcpy( LFTTYFONT( TTYInfo ).lfFaceName, "Courier New" ) ;
307 299
... ... @@ -347,7 +339,7 @@ void StartThreads(void)
347 339 CreateThread( NULL,
348 340 0,
349 341 (LPTHREAD_START_ROUTINE) ReaderAndStatusProc,
350   - (LPVOID) ghWndTTY,
  342 + (LPVOID) ghWndMessage,
351 343 0,
352 344 &dwReadStatId);
353 345
... ... @@ -392,15 +384,10 @@ HANDLE SetupCommPort()
392 384 //
393 385 // open communication port handle
394 386 //
395   - COMDEV( TTYInfo ) = CreateFile( gszPort,
396   - GENERIC_READ | GENERIC_WRITE,
397   - 0,
398   - 0,
399   - OPEN_EXISTING,
400   - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
401   - 0);
  387 + COMDEV( TTYInfo ) = CreateFile( gszPort, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, 0);
402 388
403   - if (COMDEV(TTYInfo) == INVALID_HANDLE_VALUE) {
  389 + if (COMDEV(TTYInfo) == INVALID_HANDLE_VALUE)
  390 + {
404 391 ErrorReporter("CreateFile");
405 392 return NULL;
406 393 }
... ... @@ -436,6 +423,7 @@ HANDLE SetupCommPort()
436 423 // set overall connect flag
437 424 //
438 425 CONNECTED( TTYInfo ) = TRUE ;
  426 + OutputAclorBuffer("open COM sucess!\r\n",RGB(255, 255, 255));
439 427
440 428 return COMDEV(TTYInfo);
441 429 }
... ... @@ -595,3 +583,281 @@ BOOL DisconnectOK()
595 583
596 584 return ((MessageBox(ghwndMain, "OK to Disconnect?", gszPort, MB_YESNO)) == IDYES);
597 585 }
  586 +/*-----------------------------------------------------------------------------
  587 +FUNCTION: QuerySingleSerialPortEx
  588 +
  589 +PURPOSE: 查询指定端口状态
  590 +-----------------------------------------------------------------------------*/
  591 +
  592 +
  593 +BOOL QuerySingleSerialPortEx(int nPort)
  594 +{
  595 + char strComm[50];
  596 + BOOL bValid = TRUE;
  597 + HANDLE hComm;
  598 + int nError;
  599 +
  600 +
  601 + sprintf(strComm,"COM%d",nPort);
  602 + if (nPort >= 10)
  603 + {//微软的技术手册规定打开端口号大于9的串口时应该使用"\\.\COM10"格式的文件名,更多的信息请参考msdn。
  604 + sprintf(strComm,"\\\\.\\COM%d",nPort);
  605 + }
  606 +
  607 + hComm = CreateFile(strComm,GENERIC_READ | GENERIC_WRITE,0,NULL,\
  608 + OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL| FILE_FLAG_OVERLAPPED, NULL);
  609 + nError = GetLastError();
  610 +
  611 + if(INVALID_HANDLE_VALUE == hComm)
  612 + {//***********如果没有该设备,或者被其他应用程序占用********
  613 + if(2 == nError)
  614 + bValid = -1;
  615 + else if(5 == nError)
  616 + bValid = FALSE;
  617 + else
  618 + bValid = FALSE;
  619 + }
  620 + CloseHandle(hComm); //重要 关闭文件句柄 = 关闭串口
  621 + return bValid;
  622 +}
  623 +
  624 +
  625 +/*-----------------------------------------------------------------------------
  626 +FUNCTION: QuerySingleSerialPortEx
  627 +
  628 +PURPOSE: 查询指定范围端口状态
  629 +利用API查询指定范围内的串口状态信息,并分别返回指定范围内系统存在的串口,
  630 +当前未被占用的可用串口,已被占用的串口和系统不存在的串口
  631 +*/
  632 +
  633 +void QuerySerialPortStatusEx(int *AryNoneOpenedPort,int nStartPort,int nLastPort)
  634 +{
  635 + char strTmp[50],strComm[50],strFree[50];
  636 + int n1 = nStartPort,n2=nLastPort,i,loop = 0;
  637 + HANDLE hComm;
  638 + int nLastError;
  639 + //对输入的参数进行检查
  640 + if(nStartPort < 1) nStartPort = 1;
  641 + if(nStartPort > 65535) nStartPort = 65535;
  642 + if(nLastPort < 1) nLastPort = 1;
  643 + if(nLastPort > 65535) nLastPort = 65535;
  644 + nStartPort = min(n1,n2);
  645 + nLastPort = max(n1,n2);
  646 + memset(AryNoneOpenedPort,0,255);
  647 +
  648 +
  649 + for (i = nStartPort;i<=nLastPort;i++)
  650 + {
  651 + sprintf(strComm,"COM%d",i);
  652 + if (i >= 10)
  653 + {//微软的技术手册规定打开端口号大于9的串口时应该使用"\\.\COM10"格式的文件名,更多的信息请参考msdn。
  654 + sprintf(strComm,"\\\\.\\COM%d",i);
  655 + }
  656 + // 这里的CreateFile函数起了很大的作用,可以用来创建系统设备文件,如果该设备不存在或者被占用,则会返回一个错误,即下面的 INVALID_HANDLE_VALUE ,据此可以判断可使用性。详细参见MSDN中的介绍。
  657 + hComm = CreateFile(strComm,GENERIC_READ | GENERIC_WRITE,0,NULL,\
  658 + OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL| FILE_FLAG_OVERLAPPED, NULL);
  659 + nLastError = GetLastError();
  660 + //strComm.TrimLeft("\\\\.\\");
  661 +
  662 + if(hComm != INVALID_HANDLE_VALUE)
  663 + {//串口存在且未被占用
  664 + AryNoneOpenedPort[loop] = i;
  665 + loop++;
  666 + }
  667 + CloseHandle(hComm); //关闭文件句柄 - 必要
  668 + }
  669 +
  670 +}
  671 +
  672 +
  673 +/*
  674 +代码说明
  675 +EscapeCommFunction()函数
  676 +指示指定的通信设备执行扩展功能。
  677 +BOOL EscapeCommFunction(
  678 + HANDLE hFile, //通信设备的句柄
  679 + DWORD dwFunc //指定执行的功能
  680 +);
  681 +hFile:串行端口的Handle值,此值即为使用createFile函数后所返回的值。
  682 +dwFunc:指定串行端口必须完成的工作,由以下的常数数值组成:
  683 +CLRDTR:将DTR线路降成低电位。
  684 +CLRRTS:将RTS线路降成低电位
  685 +SETDTR:将DT&线路升成高电位。
  686 +SETRTS:RTS线路升成高电位
  687 +SETXOFF:当接收到Xoff字符时启动传输操作。
  688 +SETXON:当接收到Xon字符时启动传蝓作。
  689 +SETBREAK:没置道信状态为中断(送出Break信号)。
  690 +CLRBREAK:清除 Break信号,使传输动作继续。
  691 +请特别注意到上述的参数,包有DTR、RTS的线路控制指令,如果要个别地控制这两条线路的高低电位状态就需要硬用这个函数。
  692 +
  693 +
  694 +
  695 +GetCommState()函数功能,使用指定通信设备的当前控制设置填充设备控制块(DCB结构)
  696 +BOOL GetCommState( HANDLE hFile, LPDCB lpDCB );
  697 +参数
  698 +hFile [in]由CreateFile函数返回的通信设备句柄。
  699 +lpDCB [out]指向返回控制设置数据的DCB结构的长指针。
  700 +typedef struct _DCB { //DCB结构声明
  701 + DWORD DCBlength; DCB结构的长度
  702 + DWORD BaudRate; 当前波特率
  703 + DWORD fBinary: 1; 二进制模式,无EOF检查
  704 + DWORD fParity: 1; 激活奇偶校验检查
  705 + DWORD fOutxCtsFlow:1; CTS输出流量控制
  706 + DWORD fOutxDsrFlow:1; DSR输出流量控制
  707 + DWORD fDtrControl:2; DTR流量控制类型
  708 + DWORD fDsrSensitivity:1; DSR安全设置
  709 + DWORD fTXContinueOnXoff: 1; XOFF持续Tx
  710 + DWORD fOutX: 1; XON/XOFF输出流量控制
  711 + DWORD fInX: 1; XON/XOFF输出流量控制
  712 + DWORD fErrorChar: 1; 激活错误替换机制
  713 + DWORD fNull: 1; 允许舍空格
  714 + DWORD fRtsControl:2; Rts流量控制
  715 + DWORD fAbortOnError:1; 有错误时放弃读/写
  716 + DWORD fDummy2:17; 保留
  717 + WORD wReserved; 现在不使用
  718 + WORD XonLim; 传送XON阀值
  719 + WORD XoffLim; 传送XOFF阀值
  720 + BYTE ByteSize; 每个字节的位数 4-8
  721 + BYTE Parity; 校验 0-4=None,Odd,Even,Mark,Space
  722 + BYTE StopBits; 0,1,2 = 1, 1.5, 2
  723 + char XonChar; 设置Tx和Rx的XON的字符
  724 + char XoffChar; 设置Tx和Rx的XOFF字符
  725 + char ErrorChar; 有错误时的替换字符
  726 + char EofChar; 表示输入结束的字符
  727 + char EvtChar; 接收事件字符
  728 + WORD wReserved1; 保留未使用
  729 +} DCB, *LPDCB;
  730 +
  731 +DCB结构中重要参数说明如下:
  732 +
  733 +Baudrate:串行端口的传输速度
  734 +fBinary:是否采用二进制方式发送数据,若设为1,表示采用二进制方式,占 一个位。由于win32只支持二进制的方式,故此值必须设置为1.
  735 +fParity:是否启动奇偶校验位检查,若设为1,表示采用奇偶校验位检查。此标志占一个位。
  736 +fOutxCtsFlow:是否采用CTS硬件流量控制。当此值设为1,而CTS引脚为底电位时,数据发送将暂停,直到CTS引脚升至高电位。占一个位。
  737 +fOutDsrFlow:是否采用DSR硬件流量控制。当此值设为1,而DSR引脚为低电位时,数据发送将暂停,直到DSR引脚升至高电位,占一个位。
  738 +fDtrControl:是否采用DTR硬件流量控制。可设为DTR_CONTROL_DISABLE(串行端口打开后设为低电位)、DTR_CONTROL_ENABLE( 串行端口打开后设为高电位)DTR_CONTROL_HANDSHAKE(启动硬件流量控制)三者之一,其常数定义数值分别是0、1、2。此标志占两个位。
  739 +fDsrSensitivity:当成True时,当DSR引脚被提升至高电位之前,串行端口将忽略任何被收到的数据。此标志占一个位的位置。
  740 +ftOutX:发送过程是否启用软件握手(XON_XOFF)。当设成1时,发送过程收到XOFF字符时停上发送,而收到XON字符时恢复发送。此标志占一个位的位置。
  741 +fInX:发送过程是否后用软件握手(XON-XOFF),当设成1时,接收过程若超过设置值(XoffLim参数决定),则送出XOFF字符:而低于设置值时(Xonlim参数决定)送出XON字符。此标志占一个位的位置。
  742 +fNuil:接收过程是否舍弃空格符。若设成1则于接收过程将自动去掉空格符。此标志占一个位的位置。
  743 +fRtsControl:是否启动RTS硬件流控制。可设为RTS_CONTROL_DISABLE(串行端凵打丌后设为低电位)、RTS_CONTROL_ENABLE(串行端口打开后设为高电位)、RTS_CONTROL_HANDSHAKE(启动硬件流量控制)、
  744 +RTSCONTROLTOGGLE(指示发过程的进行状态)四者之一,其常数是0、1、2、3。此标志占两个位的位置。
  745 +XonLim:设置发送XON字符时,输入缓冲区中的最小字节数
  746 +XoffLim:设置发送XOFF字符时,输入缓冲区中的最大字节数
  747 +ByteSize:设置数据位数。有5、6、7、8可以设置。
  748 +Parity:设置校验位检查的种类。有None、Even、Odd三种
  749 +StopBits:设置停止位数。有1、1.5、2三种
  750 +XonChar:设置XON字符
  751 +XoffChar:设置XOFF字符
  752 +
  753 +
  754 +SetCommState()函数
  755 +SetCommState()函数设置串行端口状态。如设置串口设置(波特率,校验,停止位,数据位等).
  756 +SetCommState()函数原型:
  757 +BOOL SetCommState( HANDLE hFile, LPDCB lpDCB );
  758 +hFile:串行端口的Handle值,此值即为使用CreateFile函数后返回的值。
  759 +lpDCB:设备控制块(Device Control Block, DCB)结构,将指定后的DCB结构传入。
  760 +
  761 +
  762 +WriteFile()函数
  763 +WriteFile函数,可以将数据写入一个文件或者I/O设备。该函数比fwrite函数要灵活的多,也可将这个函数应用于对通信设备、管道、套接字以及邮槽的处理。
  764 +windows将串行端口当成文件来使用,因此写入串行端口数据的函数也是WriteFile。
  765 +WriteFile()函数原型:
  766 +BOOL WriteFile( HANDLE hFile,//文件句柄
  767 + LPCVOID lpBuffer,//数据缓存区指针
  768 + DWORD nNumberOfBytesToWrite,//要写的字节数
  769 + LPDWORD lpNumberOfBytesWritten,//用于保存实际写入字节数的存储区域的指针
  770 + LPOVERLAPPED lpOverlapped//OVERLAPPED结构体指针
  771 +);
  772 +hFile:串行端口的Handle值,句柄
  773 +lpBuffer:指向欲发送的数据
  774 +nNumberOfBytesToWrite:写入的字节数
  775 +lpNumberOfBytesWritten:指向被写入的字节数的变量地址
  776 +lpOverlapped:指向overlapped I/O的结构地址,通常用来作背景工作时同步检查用,在串行通信中若不使用异步传输,则可不使用,设成NULL即可。
  777 +
  778 +
  779 +ReadFile()函数
  780 +从文件中读出数据。与fread函数相比,这个函数要明显灵活的多。该函数能够操作通信设备、管道、套接字以及邮槽。
  781 +windows将串行端口的使用当成文件,因此读取串行端口数据的函数亦使用读文件函数ReadFile.
  782 +ReadFile()函数原型:
  783 +BOOL ReadFile(
  784 + HANDLE hFile, //文件的句柄
  785 + LPVOID lpBuffer, //接收数据的缓冲区
  786 + DWORD nNumberOfBytesToRead, //读取的字节数
  787 + LPDWORD lpNumberOfBytesRead, //指向实际读取字节数的指针
  788 + LPOVERLAPPED lpOverlapped
  789 + //如文件打开时指定了FILE_FLAG_OVERLAPPED,那么必须,用这个参数引用一个特殊的结构。
  790 + //该结构定义了一次异步读取操作。否则,应将这个参数设为NULL
  791 +);
  792 +ReadFile()函数参数说明:
  793 +hFile:串行端口的Handle值,
  794 +lpBuffer:指向存储被读取数据的地址
  795 +nNumberOfBytesToRead:准备读取的数据字节数
  796 +lpNumberOfBytesRead:准备读取字节数的指针
  797 +lpOverlapped:指向overlapped I/O的结构地址,在串行通信中若不同时进行后台工作,则可不使用,设成NULL即可。
  798 +
  799 +
  800 +ClearCommError()函数
  801 +清除串行端口错误或读取串行端口现在的状态时,可用函数ClearCommError。Windows系统利用此函数清除硬件的通讯错误以及获取通讯设备的当前状态
  802 +ClearCommError()函数原型
  803 +BOOL ClearCommError( HANDLE hFile, //通信设备的句柄
  804 + LPDWORD lpErrors,//接收错误代码变量的指针
  805 + LPCOMSTAT lpStat //通信状态缓冲区的指针
  806 +);
  807 +ClearCommError()函数参数说明:
  808 +hFile:串行端冂的Handle值,此值即为使用CreateFile函数后所返回的值。
  809 +lpError:返回错误数值,错误常数如下:
  810 +CE_BREAK:检测到中断信号。
  811 +CE_DNS:Windows95专用,未被选择的并行端口。
  812 +CE_FRAME:硬件检到框架错误
  813 +CE_IOE:通信设备发生输入/输出綹误,
  814 +CE_MODE:设置模式错误,或是hFile值错误。
  815 +CE_OOP:Wmdows95专用,并行端口发生缺纸错误。CE_OVERRUN:缓冲区容量不足,数据将遗失。
  816 +CE_PTO:Windows95专用,并行端口发生超时错误。
  817 +CE_RXOVER:接收区满溢或在文件结尾被接收到后仍有数据发送过来。
  818 +CE_RXPARITY:硬件检测到校验位检查错误。
  819 +CE_TXFULL:发送缓存区已满后,应用程序仍要发送数据。
  820 +lpStat:指向通信端口状态的结构变量。此结构的原始声明如下:
  821 +typedef struct _COMSTAT { //cst
  822 + DWORD fCtsHold : 1; //Tx正在等待CTS信号
  823 + DWORD fDsrHold : 1; //Tx正在等待DSR信号
  824 + DWORD fRlsdHold : 1; //Tx正在等待RLSD信号
  825 + DWORD fXoffHold : 1; //Tx由于接收XOFF字符而在等待
  826 + DWORD fXoffSent : 1; //Tx由于发送XOFF字符而在等待
  827 + DWORD fEof : 1; //发送EOF字符
  828 + DWORD fTxim : 1; //字符在等待Tx
  829 + DWORD fReserved : 25; //保留
  830 + DWORD cbInQue; //输入缓冲区中的字节数
  831 + DWORD cbOutQue; //输出缓冲区中的字节数
  832 +} COMSTAT, *LPCOMSTAT;
  833 +此结构屮有关参数说明如下:
  834 +fCtsHold:是否正在等待CTS信号。占一个位的位置。
  835 +fDsrHold:是否正在等待DSR信号。占一个位的位置。
  836 +fRlsdHoId:是否正在等待RLSD信号。占一个位的位置。
  837 +fXoftHoId:是否因收到xoff字符而在等待。占一个位的位置。
  838 +fXoffHold:是否因送出xoff字符而使得发送的动作在等待。占一个位置
  839 +cbInQue:在输入缓冲区尚未被ReadFile函数读取的数据字节数。这个参数经常被用来进行状态检查。
  840 +cbOutQue:在发送缓冲区而尚未被发送的据字节数
  841 +
  842 +
  843 +WaitForMultipleObjects 是Windows中的一个功能非常强大的函数,几乎可以等待Windows中的所有的内核对象
  844 +
  845 +PurgeComm()函数
  846 +PurgeComm()函数–清空缓冲区
  847 +BOOL PurgeComm( HANDLE hFile, DWORD dwFlags );
  848 +hFile
  849 +[in]处理通信资源。该的CreateFile函数返回该句柄。
  850 +dwFlags
  851 +[in]指定要采取的操作。下表显示了可能的值。
  852 +PURGE_TXABORT 终止所有正在进行的字符输出操作,完成一个正处于等待状态的重叠i/o操作,他将产生一个事件,指明完成了写操作
  853 +PURGE_RXCLEAR 终止所有正在进行的字符输入操作,完成一个正在进行中的重叠i/o操作,并带有已设置得适当事件
  854 +PURGE_TXABORT 这个命令指导设备驱动程序清除输出缓冲区,经常与PURGE_TXABORT 命令标志一起使用
  855 +PURGE_RXCLEAR 这个命令用于设备驱动程序清除输入缓冲区,经常与PURGE_RXABORT 命令标志一起使用
  856 +
  857 +
  858 +
  859 +
  860 +
  861 +
  862 +
  863 +*/
... ...
... ... @@ -46,7 +46,7 @@ BOOL ScrollTTYHorz( HWND, WORD, WORD );
46 46 BOOL VersionCheck();
47 47 BOOL PaintTTY( HWND );
48 48
49   -char szFileName[MAX_PATH];
  49 +//char szFileName[MAX_PATH];
50 50
51 51 /*-----------------------------------------------------------------------------
52 52
... ... @@ -160,6 +160,7 @@ BOOL InitializeApp(HINSTANCE hInst, int nShowCmd)
160 160 GlobalCleanup();
161 161 return FALSE;
162 162 }
  163 + QuerySerialPortStatusEx(TTYInfo.unOpenedPortAry,2,255);
163 164
164 165 //
165 166 // setup program's tty child window class
... ... @@ -244,7 +245,7 @@ int WINAPI MTTTYWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
244 245 DestroyTTYInfo();
245 246 DestroyWindow(ghWndToolbarDlg);
246 247 DestroyWindow(ghWndStatusDlg);
247   - DestroyWindow(ghWndTTY);
  248 + DestroyWindow(ghWndMessage);
248 249
249 250 GlobalCleanup();
250 251 PostQuitMessage(0);
... ... @@ -271,35 +272,8 @@ int WINAPI MTTTYWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
271 272
272 273 case WM_SIZE:
273 274 {
274   - //
275   - // main window size has changed,
276   - // so I need to change the positions of child windows
277   - //
278   - WORD wTop;
279   - WORD wHeight;
280   - WORD wWidth = LOWORD(lParam);
281   -
282   - //
283   - // put Settings window at top
284   - //
285   - wHeight = SETTINGSFACTOR*gwBaseY;
286   - wTop = 0;
287   - MoveWindow(ghWndToolbarDlg, 0,wTop, wWidth, wHeight, TRUE);
288   -
289   - //
290   - // put Status window at bottom
291   - //
292   - wHeight = STATUSFACTOR*gwBaseY;
293   - wTop = HIWORD(lParam) - wHeight;
294   - MoveWindow(ghWndStatusDlg, 0, wTop, wWidth, wHeight, TRUE);
295   -
296   - //
297   - // put TTTY window right in the middle
298   - // height = whole window - height of two previous windows
299   - //
300   - wHeight = HIWORD(lParam) - ((STATUSFACTOR + SETTINGSFACTOR)*gwBaseY);
301   - wTop = SETTINGSFACTOR*gwBaseY;
302   - MoveWindow(ghWndTTY, 0, wTop, wWidth, wHeight, TRUE);
  275 + //主窗口大小已经改变,,所以我需要改变子窗口的位置
  276 + ResizeAllWindow(LOWORD(lParam),HIWORD(lParam));
303 277 }
304 278
305 279 break;
... ... @@ -309,8 +283,8 @@ int WINAPI MTTTYWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
309 283 break;
310 284
311 285 case WM_CHAR:
312   - SetFocus(ghWndTTY);
313   - SendMessage(ghWndTTY, WM_CHAR, wParam, lParam);
  286 + SetFocus(ghWndMessage);
  287 + SendMessage(ghWndMessage, WM_CHAR, wParam, lParam);
314 288 break;
315 289
316 290 case WM_CLOSE:
... ... @@ -357,119 +331,71 @@ void CmdDispatch(int iMenuChoice, HWND hwnd, LPARAM lParam)
357 331
358 332 switch (iMenuChoice)
359 333 {
360   - case ID_HELP_ABOUTMTTTY:
361   - CmdAbout(hwnd);
362   - break;
363   -
364   - case ID_TRANSFER_SENDFILETEXT:
365   - {
366   - char * szFilter = "bin Files\0*.bin\0";
367   - OPENFILENAME ofn = {0};
368   -
369   - ofn.lStructSize = sizeof(OPENFILENAME);
370   - ofn.hwndOwner = hwnd;
371   - ofn.lpstrFilter = szFilter;
372   - ofn.lpstrFile = szFileName;
373   - ofn.nMaxFile = MAX_PATH;
374   - ofn.lpstrTitle = "Select file";
375   - ofn.Flags = OFN_FILEMUSTEXIST;
376   -
377   - if (!GetOpenFileName(&ofn))
378   - break;
379   -
380   - UpdateStatus(szFileName);
381   - //if (TRUE)
382   - // TransferFileTextStart(szFileName);
383   - }
384   - break;
  334 + //case ID_HELP_ABOUTMTTTY:
  335 + // CmdAbout(hwnd);
  336 + // break;
385 337
  338 + case ID_TRANSFER_SENDFILETEXT:
  339 + break;
386 340 case ID_TRANSFER_RECEIVEFILETEXT:
387   - {
388   - char * szFilter = "Text Files\0*.TXT\0";
389   - OPENFILENAME ofn = {0};
390   -
391   - ofn.lStructSize = sizeof(OPENFILENAME);
392   - ofn.hwndOwner = hwnd;
393   - ofn.lpstrFilter = szFilter;
394   - ofn.lpstrFile = szFileName;
395   - ofn.nMaxFile = MAX_PATH;
396   - ofn.lpstrTitle = "Receive File";
397   - ofn.Flags = OFN_OVERWRITEPROMPT;
398   -
399   - if (!GetSaveFileName(&ofn))
400   - break;
401   -
402   - ReceiveFileText(szFileName);
403   - }
404 341 break;
405 342
406 343 case ID_TRANSFER_ABORTSENDING:
407 344 // was abort sent from the abort button?
408   - if (LOWORD(lParam) == IDC_ABORTBTN) {
409   - // am I in a transfer repeat?
410   - if (REPEATING(TTYInfo))
411   - TransferRepeatDestroy();
412   - // am I in a normal recieve state, then stop sending
413   - else if (gdwReceiveState == RECEIVE_TTY)
414   - TransferFileTextEnd();
415   - // if I am not in a normal receive state, then stop capturing
416   - else
417   - gfAbortTransfer = TRUE;
418   - }
419   - else
420   - // transfer abort was sent by transfer thread
421   - TransferFileTextEnd();
  345 + //if (LOWORD(lParam) == IDC_ABORTBTN)
  346 + //{
  347 + // // am I in a transfer repeat?
  348 + // if (REPEATING(TTYInfo))
  349 + // TransferRepeatDestroy();
  350 + // // am I in a normal recieve state, then stop sending
  351 + // else if (gdwReceiveState == RECEIVE_TTY)
  352 + // TransferFileTextEnd();
  353 + // // if I am not in a normal receive state, then stop capturing
  354 + // else
  355 + // gfAbortTransfer = TRUE;
  356 + //}
  357 + //else
  358 + // // transfer abort was sent by transfer thread
  359 + // TransferFileTextEnd();
422 360 break;
423 361
424 362 case ID_TRANSFER_SENDREPEATEDLY:
425   - {
426   - DWORD dwFreq;
427   - char * szFilter = "Text Files\0*.TXT\0";
428   - OPENFILENAME ofn = {0};
429   -
430   - ofn.lStructSize = sizeof(OPENFILENAME);
431   - ofn.hwndOwner = hwnd;
432   - ofn.lpstrFilter = szFilter;
433   - ofn.lpstrFile = szFileName;
434   - ofn.nMaxFile = MAX_PATH;
435   - ofn.lpstrTitle = "Send File Repeatedly";
436   - ofn.Flags = OFN_FILEMUSTEXIST;
437   -
438   - if (!GetOpenFileName(&ofn))
439   - break;
440   -
441   - dwFreq = GetAFrequency();
442   -
443   - TransferRepeatCreate(szFileName, dwFreq);
444   - }
445   - break;
446   -
  363 + //{
  364 + // DWORD dwFreq;
  365 + // char * szFilter = "Text Files\0*.TXT\0";
  366 + // OPENFILENAME ofn = {0};
  367 + // ofn.lStructSize = sizeof(OPENFILENAME);
  368 + // ofn.hwndOwner = hwnd;
  369 + // ofn.lpstrFilter = szFilter;
  370 + // ofn.lpstrFile = TTYInfo.szFileName;
  371 + // ofn.nMaxFile = MAX_PATH;
  372 + // ofn.lpstrTitle = "Send File Repeatedly";
  373 + // ofn.Flags = OFN_FILEMUSTEXIST;
  374 + // if (!GetOpenFileName(&ofn)) break;
  375 + // dwFreq = GetAFrequency();
  376 + // TransferRepeatCreate(TTYInfo.szFileName, dwFreq);
  377 + //}
  378 + //break;
447 379 case ID_TRANSFER_ABORTREPEATEDSENDING:
448 380 TransferRepeatDestroy();
449 381 break;
450 382
451 383 case ID_TTY_CLEAR:
452   - ClearTTYContents();
453   - InvalidateRect(ghWndTTY, NULL, TRUE);
  384 + //ClearTTYContents();
  385 + //InvalidateRect(ghWndMessage, NULL, TRUE);
454 386 break;
455 387
456 388 // The following correspond to menu choices and buttons in the settings dlog
457   - case IDC_FONTBTN:
458   - case IDC_SENDBTN:
459   - case IDC_COMMEVENTSBTN:
460   - case IDC_FLOWCONTROLBTN:
461   - case IDC_TIMEOUTSBTN:
462   - SendMessage(ghWndToolbarDlg, WM_COMMAND, (WPARAM) iMenuChoice, (LPARAM) GetDlgItem(ghWndToolbarDlg, iMenuChoice));
463   - break;
464   -
465   - case ID_FILE_CONNECT:
466   - if (SetupCommPort() != NULL)
467   - ChangeConnection(hwnd, CONNECTED(TTYInfo));
468   - break;
469   -
  389 + //case IDC_FONTBTN:
  390 + //case IDC_SENDBTN:
  391 + //case IDC_COMMEVENTSBTN:
  392 + //case IDC_FLOWCONTROLBTN:
  393 + //case IDC_TIMEOUTSBTN:
  394 + //SendMessage(ghWndToolbarDlg, WM_COMMAND, (WPARAM) iMenuChoice, (LPARAM) GetDlgItem(ghWndToolbarDlg, iMenuChoice));
  395 + //break;
470 396 case ID_FILE_DISCONNECT:
471   - if (BreakDownCommPort())
472   - ChangeConnection(hwnd, CONNECTED(TTYInfo));
  397 + //if (BreakDownCommPort())
  398 + // ChangeConnection(hwnd, CONNECTED(TTYInfo));
473 399 break;
474 400
475 401 case ID_FILE_EXIT:
... ... @@ -497,12 +423,12 @@ HISTORY: Date: Author: Comment:
497 423 /*-----------------------------------------------------------------------------*/
498 424 void OpenTTYChildWindow(HWND hWnd)
499 425 {
500   - ghWndTTY = CreateWindow( "MTTTYChildClass", "TTY Window",
  426 + ghWndMessage = CreateWindow( "MTTTYChildClass", "TTY Window",
501 427 WS_CHILD | WS_VISIBLE | WS_VSCROLL,
502 428 0,0,
503 429 0,0,
504 430 hWnd, (HMENU)ID_TTYWINDOW, ghInst, NULL);
505   - if (ghWndTTY == NULL)
  431 + if (ghWndMessage == NULL)
506 432 ErrorReporter("Can't Create TTY Child Window");
507 433
508 434 return;
... ... @@ -579,9 +505,7 @@ BOOL NEAR ScrollTTYVert( HWND hWnd, WORD wScrollCmd, WORD wScrollPos )
579 505 if (nScrollAmt != 0)
580 506 {
581 507 YOFFSET( TTYInfo ) = YOFFSET( TTYInfo ) + nScrollAmt ;
582   -
583 508 SetScrollPos( hWnd, SB_VERT, YOFFSET( TTYInfo ), TRUE ) ;
584   -
585 509 ScrollWindowEx( hWnd, 0, -nScrollAmt, NULL, NULL, NULL, NULL, SW_INVALIDATE | SW_ERASE) ;
586 510 }
587 511
... ... @@ -696,20 +620,16 @@ BOOL NEAR PaintTTY( HWND hWnd )
696 620 hDC = BeginPaint( hWnd, &ps ) ;
697 621 hOldFont = SelectObject( hDC, HTTYFONT( TTYInfo ) ) ;
698 622 SetTextColor( hDC, FGCOLOR( TTYInfo ) ) ;
  623 +#if 1//def __TOPWELL_EDIT__
  624 + SetBkColor( hDC, TTYInfo.rgbBGColor ) ;
  625 +#else
699 626 SetBkColor( hDC, GetSysColor( COLOR_WINDOW ) ) ;
  627 +#endif
700 628 rect = ps.rcPaint ;
701   - nRow =
702   - min( MAXROWS - 1,
703   - max( 0, (rect.top + YOFFSET( TTYInfo )) / YCHAR( TTYInfo ) ) ) ;
704   - nEndRow =
705   - min( MAXROWS - 1,
706   - ((rect.bottom + YOFFSET( TTYInfo ) - 1) / YCHAR( TTYInfo ) ) ) ;
707   - nCol =
708   - min( MAXCOLS - 1,
709   - max( 0, (rect.left + XOFFSET( TTYInfo )) / XCHAR( TTYInfo ) ) ) ;
710   - nEndCol =
711   - min( MAXCOLS - 1,
712   - ((rect.right + XOFFSET( TTYInfo ) - 1) / XCHAR( TTYInfo ) ) ) ;
  629 + nRow = min( MAXROWS - 1, max( 0, (rect.top + YOFFSET( TTYInfo )) / YCHAR( TTYInfo ) ) ) ;
  630 + nEndRow = min( MAXROWS - 1, ((rect.bottom + YOFFSET( TTYInfo ) - 1) / YCHAR( TTYInfo ) ) ) ;
  631 + nCol = min( MAXCOLS - 1, max( 0, (rect.left + XOFFSET( TTYInfo )) / XCHAR( TTYInfo ) ) ) ;
  632 + nEndCol = min( MAXCOLS - 1, ((rect.right + XOFFSET( TTYInfo ) - 1) / XCHAR( TTYInfo ) ) ) ;
713 633 nCount = nEndCol - nCol + 1 ;
714 634 for (; nRow <= nEndRow; nRow++)
715 635 {
... ... @@ -720,9 +640,7 @@ BOOL NEAR PaintTTY( HWND hWnd )
720 640 rect.left = nHorzPos ;
721 641 rect.right = nHorzPos + XCHAR( TTYInfo ) * nCount ;
722 642 SetBkMode( hDC, OPAQUE ) ;
723   - ExtTextOut( hDC, nHorzPos, nVertPos, ETO_OPAQUE | ETO_CLIPPED, &rect,
724   - (LPSTR)( SCREEN( TTYInfo ) + nRow * MAXCOLS + nCol ),
725   - nCount, NULL ) ;
  643 + ExtTextOut( hDC, nHorzPos, nVertPos, ETO_OPAQUE | ETO_CLIPPED, &rect, (LPSTR)( SCREEN( TTYInfo ) + nRow * MAXCOLS + nCol ), nCount, NULL ) ;
726 644 }
727 645 SelectObject( hDC, hOldFont ) ;
728 646 EndPaint( hWnd, &ps ) ;
... ... @@ -920,17 +838,17 @@ int WINAPI TTYChildProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam)
920 838 return FALSE;
921 839
922 840 if (LOCALECHO(TTYInfo))
923   - OutputABufferToWindow(ghWndTTY, (CHAR *) &wParam, 1);
  841 + OutputABufferToWindow(ghWndMessage, (CHAR *) &wParam, 1);
924 842 }
925 843 }
926 844 break;
927 845
928 846 case WM_SETFOCUS:
929   - SetTTYFocus( ghWndTTY ) ;
  847 + SetTTYFocus( ghWndMessage ) ;
930 848 break ;
931 849
932 850 case WM_KILLFOCUS:
933   - KillTTYFocus( ghWndTTY ) ;
  851 + KillTTYFocus( ghWndMessage ) ;
934 852 break ;
935 853
936 854 case WM_MOUSEACTIVATE:
... ... @@ -947,3 +865,41 @@ int WINAPI TTYChildProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam)
947 865 }
948 866 return 0L;
949 867 }
  868 +BOOL ResizeAllWindow(DWORD mainwidth, WORD mainheigh)
  869 +{
  870 + RECT rect_setting,rect_info,rect_stauts;
  871 + rect_setting.left = 0;
  872 + rect_setting.top = 0;
  873 + rect_setting.right = mainwidth;
  874 + rect_setting.bottom = SETTINGSFACTOR*gwBaseY;
  875 +
  876 + rect_info.left = mainwidth/5;
  877 + rect_info.top = rect_setting.bottom;
  878 + rect_info.right = mainwidth;
  879 + rect_info.bottom = mainheigh;
  880 +
  881 + rect_stauts.left = 0;
  882 + rect_stauts.top = rect_setting.bottom;
  883 + rect_stauts.right = rect_info.left ;
  884 + rect_stauts.bottom = mainheigh;
  885 +
  886 + MoveWindow(ghWndToolbarDlg,
  887 + rect_setting.left,
  888 + rect_setting.top,
  889 + rect_setting.right -rect_setting.left,
  890 + rect_setting.bottom -rect_setting.top,
  891 + TRUE);
  892 + MoveWindow(ghWndMessage,
  893 + rect_info.left,
  894 + rect_info.top,
  895 + rect_info.right -rect_info.left,
  896 + rect_info.bottom -rect_info.top,
  897 + TRUE);
  898 + MoveWindow(ghWndStatusDlg,
  899 + rect_stauts.left,
  900 + rect_stauts.top,
  901 + rect_stauts.right -rect_stauts.left,
  902 + rect_stauts.bottom -rect_stauts.top,
  903 + TRUE);
  904 +
  905 +}
... ...
... ... @@ -170,23 +170,45 @@ HISTORY: Date: Author: Comment:
170 170 10/27/95 AllenD Wrote it
171 171
172 172 -----------------------------------------------------------------------------*/
173   -void OutputABuffer(HWND hTTY, char * lpBuf, DWORD dwBufLen)
  173 +void OutputAclorBuffer( char * lpBuf ,DWORD color)
174 174 {
175   - if (dwBufLen == 0) {
  175 + DWORD dwBufLen = strlen(lpBuf);
  176 + TTYInfo.rgbBGColor = color;
  177 + if (dwBufLen == 0)
  178 + {
176 179 OutputDebugString("NULL Buffer in OutputABuffer\n\r");
177 180 return;
178 181 }
179   -
180 182 switch(gdwReceiveState)
181 183 {
182 184 case RECEIVE_TTY:
183   - OutputABufferToWindow(hTTY, lpBuf, dwBufLen);
  185 + OutputABufferToWindow(ghWndMessage, lpBuf, dwBufLen);
184 186 break;
185   -
186 187 case RECEIVE_CAPTURED:
187 188 OutputABufferToFile(ghFileCapture, lpBuf, dwBufLen);
188 189 break;
  190 + default:
  191 + OutputDebugString("Unknown receive state!\n\r");
  192 + }
  193 +}
  194 +
189 195
  196 +void OutputABuffer(char * lpBuf )
  197 +{
  198 + DWORD dwBufLen = strlen(lpBuf);
  199 + if (dwBufLen == 0)
  200 + {
  201 + OutputDebugString("NULL Buffer in OutputABuffer\n\r");
  202 + return;
  203 + }
  204 + switch(gdwReceiveState)
  205 + {
  206 + case RECEIVE_TTY:
  207 + OutputABufferToWindow(ghWndMessage, lpBuf, dwBufLen);
  208 + break;
  209 + case RECEIVE_CAPTURED:
  210 + OutputABufferToFile(ghFileCapture, lpBuf, dwBufLen);
  211 + break;
190 212 default:
191 213 OutputDebugString("Unknown receive state!\n\r");
192 214 }
... ...
... ... @@ -19,11 +19,88 @@
19 19 -----------------------------------------------------------------------------*/
20 20
21 21 #include <windows.h>
  22 +#include <commctrl.h>
22 23 #include "mttty.h"
23 24
24 25 #define AMOUNT_TO_READ 512
25 26 #define NUM_READSTAT_HANDLES 4
26 27
  28 +void PhraseMessageFromUart(char* buffToPhrase)
  29 +{
  30 + char Flashed_percent;
  31 + char lpBuf[AMOUNT_TO_READ];
  32 +
  33 + int loop1, loop2;
  34 + loop2 = 0;
  35 + for (loop1 = 0; loop1 < AMOUNT_TO_READ; loop1++)
  36 + {
  37 + if (buffToPhrase[loop1] < 0x0A || buffToPhrase[loop1] >= 0x7f)
  38 + continue;
  39 + else
  40 + lpBuf[loop2++] = buffToPhrase[loop1];
  41 + }
  42 + lpBuf[loop2++] = '\r';
  43 + lpBuf[loop2++] = '\n';
  44 + lpBuf[loop2] = 0;
  45 + if (strstr(lpBuf, "ROM boot"))
  46 + {
  47 + if (GetTickCount() -TTYInfo.tickcountFinish < 2000) return 0;
  48 + TTYInfo.rgbBGColor = RGB(255, 255, 255);
  49 + OutputABuffer( "开始下载\r\n");
  50 + TTYInfo.DownloadReday = TRUE;
  51 + if (strlen(TTYInfo.szFileName) != 0)
  52 + TransferFileTextStart(TTYInfo.szFileName);
  53 + else
  54 + {
  55 + TTYInfo.rgbBGColor = RGB(255, 201, 14);
  56 + OutputABuffer( "还未选择软件\r\n");
  57 + return 0;
  58 + }
  59 + }
  60 + else if (strstr(lpBuf, "Verify successful"))
  61 + {
  62 + TTYInfo.tickcountFinish = GetTickCount();
  63 + TTYInfo.rgbBGColor = RGB(255, 255, 255);
  64 + OutputABuffer( "下载完成\r\n");
  65 + TTYInfo.DownloadReday = FALSE;
  66 + PostMessage(GetDlgItem(ghWndStatusDlg, IDC_TRANSFERPROGRESS), PBM_SETPOS, 100, 0);
  67 + PostMessage(GetDlgItem(ghWndStatusDlg, IDC_TRANSFERPROGRESS), PBM_SETBARCOLOR, 0, RGB(10, 255,10));
  68 + }
  69 + else if (strstr(lpBuf, "Programming:"))
  70 + {
  71 + char * pchar_percent = strstr(lpBuf, "Programming:");
  72 + char ascbufpercent[64];
  73 + if (pchar_percent != NULL)
  74 + {
  75 + TTYInfo.tickcountFinish = GetTickCount();
  76 + TTYInfo.rgbBGColor = RGB(255, 255, 255);
  77 + memset(ascbufpercent, 0, 64);
  78 + strncpy(ascbufpercent, pchar_percent + 12, 3);
  79 + if (ascbufpercent[2] <= '0' && ascbufpercent[2] >= '9')
  80 + ascbufpercent[2] = 0;
  81 + Flashed_percent = atoi(ascbufpercent);
  82 + PostMessage(GetDlgItem(ghWndStatusDlg, IDC_TRANSFERPROGRESS), PBM_SETPOS, Flashed_percent, 0);
  83 + PostMessage(GetDlgItem(ghWndStatusDlg, IDC_TRANSFERPROGRESS), PBM_SETBARCOLOR, 0, RGB(10, 10, 255));
  84 + //OutputABuffer(hTTY, ascbufpercent);
  85 + TTYInfo.DownloadReday = FALSE;
  86 + }
  87 + }
  88 + else if (strstr(lpBuf, "Verify fail"))
  89 + {
  90 + TTYInfo.rgbBGColor = RGB(255, 50, 50);
  91 + OutputABuffer( "下载失败\r\n");
  92 + TTYInfo.DownloadReday = FALSE;
  93 + PostMessage(GetDlgItem(ghWndStatusDlg, IDC_TRANSFERPROGRESS), PBM_SETBARCOLOR, 0, TTYInfo.rgbBGColor);
  94 + }
  95 + else
  96 + {
  97 + //TTYInfo.rgbBGColor = RGB(255, 255, 255);
  98 + //OutputABuffer(hTTY, lpBuf);
  99 + //TTYInfo.DownloadReday = FALSE;
  100 + }
  101 +
  102 +}
  103 +
27 104 /*-----------------------------------------------------------------------------
28 105
29 106 FUNCTION: ReaderAndStatusProc(LPVOID)
... ... @@ -52,12 +129,14 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV)
52 129 DWORD dwStoredFlags = 0xFFFFFFFF; // local copy of event flags
53 130 DWORD dwCommEvent; // result from WaitCommEvent
54 131 DWORD dwOvRes; // result from GetOverlappedResult
55   - DWORD dwRead; // bytes actually read
  132 + DWORD dwReadFromUart; // bytes actually read
56 133 DWORD dwRes; // result from WaitForSingleObject
57 134 BOOL fWaitingOnRead = FALSE;
58 135 BOOL fWaitingOnStat = FALSE;
59 136 BOOL fThreadDone = FALSE;
60   - char lpBuf[AMOUNT_TO_READ];
  137 +#if 1//def __TOPWELL_EDIT__
  138 + char lpBuf_first[AMOUNT_TO_READ];
  139 +#endif
61 140 HWND hTTY;
62 141
63 142 hTTY = (HANDLE) lpV;
... ... @@ -92,49 +171,45 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV)
92 171 CheckModemStatus(TRUE);
93 172 CheckComStat(TRUE);
94 173
95   - while ( !fThreadDone ) {
96   -
97   - //
  174 + while ( !fThreadDone )
  175 + {
98 176 // If no reading is allowed, then set flag to
99 177 // make it look like a read is already outstanding.
100   - //
101 178 if (NOREADING( TTYInfo ))
102 179 fWaitingOnRead = TRUE;
103   -
104   - //
105 180 // if no read is outstanding, then issue another one
106   - //
107   - if (!fWaitingOnRead) {
108   - if (!ReadFile(COMDEV(TTYInfo), lpBuf, AMOUNT_TO_READ, &dwRead, &osReader)) {
  181 + if (!fWaitingOnRead)
  182 + {
  183 + #if 1//def __TOPWELL_EDIT__
  184 + if (!ReadFile(COMDEV(TTYInfo), lpBuf_first, AMOUNT_TO_READ, &dwReadFromUart, &osReader))
  185 + #else
  186 + if (!ReadFile(COMDEV(TTYInfo), lpBuf, AMOUNT_TO_READ, &dwRead, &osReader))
  187 + #endif
  188 + {
109 189 if (GetLastError() != ERROR_IO_PENDING) // read not delayed?
110 190 ErrorInComm("ReadFile in ReaderAndStatusProc");
111   -
112 191 fWaitingOnRead = TRUE;
113 192 }
114   - else { // read completed immediately
115   - if ((dwRead != MAX_READ_BUFFER) && SHOWTIMEOUTS(TTYInfo))
  193 + else
  194 + { // read completed immediately
  195 + if ((dwReadFromUart != MAX_READ_BUFFER) && SHOWTIMEOUTS(TTYInfo))
116 196 UpdateStatus("Read timed out immediately.\r\n");
117   -
118   - if (dwRead)
119   - OutputABuffer(hTTY, lpBuf, dwRead);
  197 + if (dwReadFromUart)
  198 + PhraseMessageFromUart(lpBuf_first);
  199 + //OutputABuffer(hTTY, lpBuf_first);
120 200 }
121 201 }
122   -
123   - //
124 202 // If status flags have changed, then reset comm mask.
125 203 // This will cause a pending WaitCommEvent to complete
126 204 // and the resultant event flag will be NULL.
127   - //
128   - if (dwStoredFlags != EVENTFLAGS(TTYInfo)) {
  205 + if (dwStoredFlags != EVENTFLAGS(TTYInfo))
  206 + {
129 207 dwStoredFlags = EVENTFLAGS(TTYInfo);
130 208 if (!SetCommMask(COMDEV(TTYInfo), dwStoredFlags))
131 209 ErrorReporter("SetCommMask");
132 210 }
133   -
134   - //
135 211 // If event checks are not allowed, then make it look
136 212 // like an event check operation is outstanding
137   - //
138 213 if (NOEVENTS(TTYInfo))
139 214 fWaitingOnStat = TRUE;
140 215 //
... ... @@ -167,18 +242,24 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV)
167 242 // read completed
168 243 //
169 244 case WAIT_OBJECT_0:
170   - if (!GetOverlappedResult(COMDEV(TTYInfo), &osReader, &dwRead, FALSE)) {
  245 + if (!GetOverlappedResult(COMDEV(TTYInfo), &osReader, &dwReadFromUart, FALSE))
  246 + {
171 247 if (GetLastError() == ERROR_OPERATION_ABORTED)
172 248 UpdateStatus("Read aborted\r\n");
173 249 else
174 250 ErrorInComm("GetOverlappedResult (in Reader)");
175 251 }
176   - else { // read completed successfully
177   - if ((dwRead != MAX_READ_BUFFER) && SHOWTIMEOUTS(TTYInfo))
  252 + else
  253 + { // read completed successfully
  254 + if ((dwReadFromUart != MAX_READ_BUFFER) && SHOWTIMEOUTS(TTYInfo))
178 255 UpdateStatus("Read timed out overlapped.\r\n");
179   -
  256 + #if 1//def __TOPWELL_EDIT__
  257 + if (dwReadFromUart)
  258 + PhraseMessageFromUart(lpBuf_first);
  259 + #else
180 260 if (dwRead)
181 261 OutputABuffer(hTTY, lpBuf, dwRead);
  262 + #endif
182 263 }
183 264
184 265 fWaitingOnRead = FALSE;
... ... @@ -188,7 +269,8 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV)
188 269 // status completed
189 270 //
190 271 case WAIT_OBJECT_0 + 1:
191   - if (!GetOverlappedResult(COMDEV(TTYInfo), &osStatus, &dwOvRes, FALSE)) {
  272 + if (!GetOverlappedResult(COMDEV(TTYInfo), &osStatus, &dwOvRes, FALSE))
  273 + {
192 274 if (GetLastError() == ERROR_OPERATION_ABORTED)
193 275 UpdateStatus("WaitCommEvent aborted\r\n");
194 276 else
... ... @@ -196,7 +278,6 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV)
196 278 }
197 279 else // status check completed successfully
198 280 ReportStatusEvent(dwCommEvent);
199   -
200 281 fWaitingOnStat = FALSE;
201 282 break;
202 283
... ... @@ -224,7 +305,8 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV)
224 305 // if status checks are not allowed, then don't issue the
225 306 // modem status check nor the com stat check
226 307 //
227   - if (!NOSTATUS(TTYInfo)) {
  308 + if (!NOSTATUS(TTYInfo))
  309 + {
228 310 CheckModemStatus(FALSE); // take this opportunity to do
229 311 CheckComStat(FALSE); // a modem status check and
230 312 // a comm status check
... ...
... ... @@ -55,17 +55,17 @@ void FillComboBox( HWND, char ** szString, DWORD *, WORD, DWORD );
55 55 BOOL SettingsDlgInit( HWND );
56 56 DWORD GetdwTTYItem( HWND, int, char **, DWORD *, int );
57 57 BYTE GetbTTYItem( HWND, int, char **, DWORD *, int);
58   -BOOL CALLBACK CommEventsProc( HWND, UINT, WPARAM, LPARAM );
  58 +//BOOL CALLBACK CommEventsProc( HWND, UINT, WPARAM, LPARAM );
59 59 BOOL CALLBACK ToolbarProc( HWND, UINT, WPARAM, LPARAM );
60 60 void InitHexControl(HWND, WORD, WORD, char);
61 61 char GetHexControl(HWND, WORD, WORD);
62 62 void SaveCommEventsDlg( HWND );
63 63 void InitCommEventsDlg( HWND, DWORD );
64   -BOOL CALLBACK FlowControlProc( HWND, UINT, WPARAM, LPARAM );
  64 +//BOOL CALLBACK FlowControlProc( HWND, UINT, WPARAM, LPARAM );
65 65 void InitFlowControlDlg( HWND );
66 66 void SaveFlowControlDlg( HWND );
67 67 void FlowDefault(HWND hdlg, WORD wId);
68   -BOOL CALLBACK TimeoutsProc( HWND, UINT, WPARAM, LPARAM );
  68 +//BOOL CALLBACK TimeoutsProc( HWND, UINT, WPARAM, LPARAM );
69 69 void InitTimeoutsDlg( HWND, COMMTIMEOUTS );
70 70 void SaveTimeoutsDlg( HWND );
71 71 BOOL CALLBACK GetADWORDProc( HWND, UINT, WPARAM, LPARAM );
... ... @@ -176,76 +176,52 @@ void ChangeConnection( HWND hwnd, BOOL fConnected )
176 176 Set focus to the child tty window
177 177 */
178 178 hMenu = GetMenu( hwnd ) ;
179   - EnableMenuItem( hMenu, ID_FILE_CONNECT,
180   - MF_GRAYED | MF_DISABLED | MF_BYCOMMAND ) ;
181   - EnableMenuItem( hMenu, ID_FILE_DISCONNECT,
182   - MF_ENABLED | MF_BYCOMMAND ) ;
183   -
184   - EnableMenuItem( hMenu, ID_TRANSFER_SENDFILETEXT,
185   - MF_ENABLED | MF_BYCOMMAND ) ;
186   - EnableMenuItem( hMenu, ID_TRANSFER_RECEIVEFILETEXT,
187   - MF_ENABLED | MF_BYCOMMAND ) ;
188   - EnableMenuItem( hMenu, ID_TRANSFER_SENDREPEATEDLY,
189   - MF_ENABLED | MF_BYCOMMAND ) ;
190   - EnableMenuItem( hMenu, ID_TRANSFER_ABORTSENDING,
191   - MF_DISABLED | MF_GRAYED | MF_BYCOMMAND );
192   - EnableMenuItem( hMenu, ID_TRANSFER_ABORTREPEATEDSENDING,
193   - MF_DISABLED | MF_GRAYED | MF_BYCOMMAND );
  179 +// EnableMenuItem( hMenu, ID_FILE_DISCONNECT, MF_ENABLED | MF_BYCOMMAND ) ;
  180 +// EnableMenuItem( hMenu, ID_TRANSFER_SENDFILETEXT, MF_ENABLED | MF_BYCOMMAND ) ;
  181 +// EnableMenuItem( hMenu, ID_TRANSFER_RECEIVEFILETEXT, MF_ENABLED | MF_BYCOMMAND ) ;
  182 +// EnableMenuItem( hMenu, ID_TRANSFER_SENDREPEATEDLY, MF_ENABLED | MF_BYCOMMAND ) ;
  183 +// EnableMenuItem( hMenu, ID_TRANSFER_ABORTSENDING, MF_DISABLED | MF_GRAYED | MF_BYCOMMAND );
  184 +// EnableMenuItem( hMenu, ID_TRANSFER_ABORTREPEATEDSENDING, MF_DISABLED | MF_GRAYED | MF_BYCOMMAND );
194 185
195 186 EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_PORTCOMBO), FALSE);
196   - EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_NOWRITINGCHK), FALSE);
197   - EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_NOREADINGCHK), FALSE);
198   - EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_NOEVENTSCHK), FALSE);
199   - EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_NOSTATUSCHK), FALSE);
200 187
201   - for (i = IDC_STATCTS; i <= IDC_STATRLSD; i++)
202   - EnableWindow( GetDlgItem(ghWndStatusDlg, i), TRUE );
  188 + //for (i = IDC_STATCTS; i <= IDC_STATRLSD; i++)
  189 + // EnableWindow( GetDlgItem(ghWndStatusDlg, i), TRUE );
203 190
204   - for (i = IDC_CTSHOLDCHK; i <= IDC_RXCHAREDIT; i++)
205   - EnableWindow( GetDlgItem(ghWndStatusDlg, i), TRUE);
  191 +// for (i = IDC_CTSHOLDCHK; i <= IDC_RXCHAREDIT; i++)
  192 +// EnableWindow( GetDlgItem(ghWndStatusDlg, i), TRUE);
206 193
207   - SetFocus(ghWndTTY);
  194 + SetFocus(ghWndMessage);
208 195 }
209 196 else {
210 197 //
211 198 // Not connected, do opposite of above.
212 199 //
213 200 hMenu = GetMenu( hwnd ) ;
214   - EnableMenuItem( hMenu, ID_FILE_CONNECT,
215   - MF_ENABLED | MF_BYCOMMAND ) ;
216   - EnableMenuItem( hMenu, ID_FILE_DISCONNECT,
217   - MF_GRAYED | MF_DISABLED | MF_BYCOMMAND ) ;
218   -
219   - EnableMenuItem( hMenu, ID_TRANSFER_SENDFILETEXT,
220   - MF_DISABLED | MF_GRAYED | MF_BYCOMMAND ) ;
221   - EnableMenuItem( hMenu, ID_TRANSFER_RECEIVEFILETEXT,
222   - MF_DISABLED | MF_GRAYED | MF_BYCOMMAND ) ;
223   - EnableMenuItem( hMenu, ID_TRANSFER_SENDREPEATEDLY,
224   - MF_DISABLED | MF_GRAYED | MF_BYCOMMAND ) ;
225   - EnableMenuItem( hMenu, ID_TRANSFER_ABORTSENDING,
226   - MF_DISABLED | MF_GRAYED | MF_BYCOMMAND ) ;
227   - EnableMenuItem( hMenu, ID_TRANSFER_ABORTREPEATEDSENDING,
228   - MF_DISABLED | MF_GRAYED | MF_BYCOMMAND );
  201 +// EnableMenuItem( hMenu, ID_FILE_DISCONNECT, MF_GRAYED | MF_DISABLED | MF_BYCOMMAND ) ;
  202 +// EnableMenuItem( hMenu, ID_TRANSFER_SENDFILETEXT, MF_DISABLED | MF_GRAYED | MF_BYCOMMAND ) ;
  203 +// EnableMenuItem( hMenu, ID_TRANSFER_RECEIVEFILETEXT, MF_DISABLED | MF_GRAYED | MF_BYCOMMAND ) ;
  204 +// EnableMenuItem( hMenu, ID_TRANSFER_SENDREPEATEDLY, MF_DISABLED | MF_GRAYED | MF_BYCOMMAND ) ;
  205 +// EnableMenuItem( hMenu, ID_TRANSFER_ABORTSENDING, MF_DISABLED | MF_GRAYED | MF_BYCOMMAND ) ;
  206 +// EnableMenuItem( hMenu, ID_TRANSFER_ABORTREPEATEDSENDING, MF_DISABLED | MF_GRAYED | MF_BYCOMMAND );
229 207
230 208 EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_PORTCOMBO), TRUE);
231   - EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_NOWRITINGCHK), TRUE);
232   - EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_NOREADINGCHK), TRUE);
233   - EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_NOEVENTSCHK), TRUE);
234   - EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_NOSTATUSCHK), TRUE);
235   -
236   - for (i = IDC_STATCTS; i <= IDC_STATRLSD; i++) {
237   - CheckDlgButton(ghWndStatusDlg, i, 0);
238   - EnableWindow( GetDlgItem(ghWndStatusDlg, i), FALSE );
239   - }
240   -
241   - for (i = IDC_CTSHOLDCHK; i <= IDC_RXCHAREDIT; i++) {
242   - if (i != IDC_TXCHAREDIT && i != IDC_RXCHAREDIT)
243   - CheckDlgButton(ghWndStatusDlg, i, 0);
244   - else
245   - SetDlgItemInt(ghWndStatusDlg, i, 0, FALSE);
246 209
247   - EnableWindow( GetDlgItem(ghWndStatusDlg, i), FALSE);
248   - }
  210 + //for (i = IDC_STATCTS; i <= IDC_STATRLSD; i++)
  211 + //{
  212 + // CheckDlgButton(ghWndStatusDlg, i, 0);
  213 + // EnableWindow( GetDlgItem(ghWndStatusDlg, i), FALSE );
  214 + //}
  215 + //for (i = IDC_CTSHOLDCHK; i <= IDC_RXCHAREDIT; i++)
  216 + //{
  217 + // if (i != IDC_TXCHAREDIT && i != IDC_RXCHAREDIT)
  218 + // CheckDlgButton(ghWndStatusDlg, i, 0);
  219 + // else
  220 + // SetDlgItemInt(ghWndStatusDlg, i, 0, FALSE);
  221 + // EnableWindow(GetDlgItem(ghWndStatusDlg, i), FALSE);
  222 + //}
  223 +
  224 +
249 225
250 226 SetFocus(ghwndMain);
251 227 }
... ... @@ -286,34 +262,14 @@ void UpdateTTYInfo()
286 262 /*MessageBox(NULL, gszPort, "TEST---", MB_OK);*/
287 263 }
288 264
289   - BAUDRATE(TTYInfo) = GetdwTTYItem( ghWndToolbarDlg,
290   - IDC_BAUDCOMBO,
291   - szBaud,
292   - BaudTable,
293   - sizeof(BaudTable)/sizeof(BaudTable[0]));
294   -
295   - PARITY(TTYInfo) = GetbTTYItem( ghWndToolbarDlg,
296   - IDC_PARITYCOMBO,
297   - szParity,
298   - ParityTable,
299   - sizeof(ParityTable)/sizeof(ParityTable[0]));
300   -
301   - STOPBITS(TTYInfo) = GetbTTYItem( ghWndToolbarDlg,
302   - IDC_STOPBITSCOMBO,
303   - szStopBits,
304   - StopBitsTable,
305   - sizeof(StopBitsTable)/sizeof(StopBitsTable[0]));
306   -
307   - LOCALECHO(TTYInfo) = IsDlgButtonChecked(ghWndToolbarDlg, IDC_LOCALECHOCHK);
308   - BYTESIZE(TTYInfo) = GetDlgItemInt(ghWndToolbarDlg, IDC_DATABITSCOMBO, NULL, FALSE);
309   - NEWLINE(TTYInfo) = IsDlgButtonChecked(ghWndToolbarDlg, IDC_LFBTN);
310   - AUTOWRAP(TTYInfo) = IsDlgButtonChecked(ghWndToolbarDlg, IDC_AUTOWRAPCHK);
311   - DISPLAYERRORS(TTYInfo) = IsDlgButtonChecked(ghWndToolbarDlg, IDC_DISPLAYERRORSCHK);
312   -
313   - NOREADING(TTYInfo) = IsDlgButtonChecked(ghWndToolbarDlg, IDC_NOREADINGCHK);
314   - NOWRITING(TTYInfo) = IsDlgButtonChecked(ghWndToolbarDlg, IDC_NOWRITINGCHK);
315   - NOEVENTS(TTYInfo) = IsDlgButtonChecked(ghWndToolbarDlg, IDC_NOEVENTSCHK);
316   - NOSTATUS(TTYInfo) = IsDlgButtonChecked(ghWndToolbarDlg, IDC_NOSTATUSCHK);
  265 + //BAUDRATE(TTYInfo) = GetdwTTYItem( ghWndToolbarDlg, IDC_BAUDCOMBO, szBaud, BaudTable, sizeof(BaudTable)/sizeof(BaudTable[0]));
  266 +
  267 + //PARITY(TTYInfo) = GetbTTYItem( ghWndToolbarDlg, IDC_PARITYCOMBO, szParity, ParityTable, sizeof(ParityTable)/sizeof(ParityTable[0]));
  268 +
  269 + //STOPBITS(TTYInfo) = GetbTTYItem( ghWndToolbarDlg, IDC_STOPBITSCOMBO, szStopBits, StopBitsTable, sizeof(StopBitsTable)/sizeof(StopBitsTable[0]));
  270 +
  271 + //BYTESIZE(TTYInfo) = GetDlgItemInt(ghWndToolbarDlg, IDC_DATABITSCOMBO, NULL, FALSE);
  272 +
317 273
318 274 if (CONNECTED(TTYInfo)) // if connected, then update port state
319 275 UpdateConnection();
... ... @@ -559,6 +515,7 @@ BOOL SettingsDlgInit( HWND hDlg )
559 515 // fill port combo box and make initial selection
560 516 //
561 517 for (wCount = 0; wCount < wMaxCOM; wCount++) {
  518 +#if 0//def __OPTEK_EDIT__
562 519 //wsprintf( szBuffer, "%s%d", (LPSTR) szTemp, wCount + 1 ) ;
563 520 if (cmdT[wCount])
564 521 {
... ... @@ -566,6 +523,16 @@ BOOL SettingsDlgInit( HWND hDlg )
566 523 SendDlgItemMessage( hDlg, IDC_PORTCOMBO, CB_ADDSTRING, 0,
567 524 (LPARAM) (LPSTR) szBuffer ) ;
568 525 }
  526 +#else
  527 + for (wCount = 0; wCount < 255; wCount++)
  528 + {
  529 + if (TTYInfo.unOpenedPortAry[wCount] == 0)
  530 + continue;;
  531 + wsprintf( szBuffer, "%s%d", (LPSTR) szTemp, TTYInfo.unOpenedPortAry[wCount] ) ;
  532 + SendDlgItemMessage( hDlg, IDC_PORTCOMBO, CB_ADDSTRING, 0,
  533 + (LPARAM) (LPSTR) szBuffer ) ;
  534 + }
  535 +#endif
569 536 }
570 537
571 538 SendDlgItemMessage( hDlg, IDC_PORTCOMBO, CB_SETCURSEL,
... ... @@ -576,55 +543,37 @@ BOOL SettingsDlgInit( HWND hDlg )
576 543 //
577 544 // fill baud combo box and make initial selection
578 545 //
579   - FillComboBox( GetDlgItem( hDlg, IDC_BAUDCOMBO ),
580   - szBaud, BaudTable,
581   - sizeof( BaudTable ) / sizeof( BaudTable[ 0 ] ),
582   - BAUDRATE( TTYInfo ) ) ;
  546 + //FillComboBox( GetDlgItem( hDlg, IDC_BAUDCOMBO ), szBaud, BaudTable, sizeof( BaudTable ) / sizeof( BaudTable[ 0 ] ), BAUDRATE( TTYInfo ) ) ;
583 547
584 548 //
585 549 // fill data bits combo box and make initial selection
586 550 //
587   - for (wCount = 5; wCount < 9; wCount++) {
  551 + for (wCount = 5; wCount < 9; wCount++)
  552 + {
588 553 wsprintf( szBuffer, "%d", wCount ) ;
589   - wPosition = LOWORD( SendDlgItemMessage( hDlg, IDC_DATABITSCOMBO,
590   - CB_ADDSTRING, 0,
591   - (LPARAM) (LPSTR) szBuffer ) ) ;
  554 + //wPosition = LOWORD( SendDlgItemMessage( hDlg, IDC_DATABITSCOMBO, CB_ADDSTRING, 0, (LPARAM) (LPSTR) szBuffer ) ) ;
592 555
593 556 //
594 557 // if wCount is current selection, tell the combo box
595 558 //
596   - if (wCount == BYTESIZE( TTYInfo ))
597   - SendDlgItemMessage( hDlg, IDC_DATABITSCOMBO, CB_SETCURSEL,
598   - (WPARAM) wPosition, 0L ) ;
  559 + //if (wCount == BYTESIZE( TTYInfo ))
  560 + // SendDlgItemMessage( hDlg, IDC_DATABITSCOMBO, CB_SETCURSEL, (WPARAM) wPosition, 0L ) ;
599 561 }
600 562
601 563 //
602 564 // fill parity combo box and make initial selection
603 565 //
604   - FillComboBox( GetDlgItem( hDlg, IDC_PARITYCOMBO ),
605   - szParity, ParityTable,
606   - sizeof( ParityTable ) / sizeof( ParityTable[ 0 ] ),
607   - PARITY( TTYInfo ) ) ;
  566 + //FillComboBox( GetDlgItem( hDlg, IDC_PARITYCOMBO ), szParity, ParityTable, sizeof( ParityTable ) / sizeof( ParityTable[ 0 ] ), PARITY( TTYInfo ) ) ;
608 567
609 568 //
610 569 // fill stop bits combo box and make initial selection
611 570 //
612   - FillComboBox( GetDlgItem( hDlg, IDC_STOPBITSCOMBO ),
613   - szStopBits, StopBitsTable,
614   - sizeof( StopBitsTable ) / sizeof ( StopBitsTable[ 0 ] ),
615   - STOPBITS( TTYInfo ) ) ;
  571 + //FillComboBox( GetDlgItem( hDlg, IDC_STOPBITSCOMBO ), szStopBits, StopBitsTable, sizeof( StopBitsTable ) / sizeof ( StopBitsTable[ 0 ] ), STOPBITS( TTYInfo ) ) ;
616 572 //
617 573 // set check marks based on TTY data
618 574 //
619   - CheckDlgButton( hDlg, IDC_LOCALECHOCHK, LOCALECHO( TTYInfo ) ) ;
620   - CheckDlgButton( hDlg, IDC_DISPLAYERRORSCHK, DISPLAYERRORS( TTYInfo ) );
621   - CheckDlgButton( hDlg, IDC_LFBTN, NEWLINE( TTYInfo ) );
622   - CheckDlgButton( hDlg, IDC_AUTOWRAPCHK, AUTOWRAP( TTYInfo ) );
623 575
624   - CheckDlgButton( hDlg, IDC_NOWRITINGCHK, NOWRITING( TTYInfo ) );
625   - CheckDlgButton( hDlg, IDC_NOREADINGCHK, NOREADING( TTYInfo ) );
626   - CheckDlgButton( hDlg, IDC_NOSTATUSCHK, NOSTATUS( TTYInfo ) );
627   - CheckDlgButton( hDlg, IDC_NOEVENTSCHK, NOEVENTS( TTYInfo ) );
  576 + SetWindowText(GetDlgItem(ghWndToolbarDlg, IDC_STATIC_BINPATH), TTYInfo.szFileName);
628 577
629 578 return ( TRUE ) ;
630 579
... ... @@ -717,7 +666,7 @@ BYTE GetbTTYItem(HWND hDlg, int idControl, char ** szString, DWORD * pTable, int
717 666 return 0;
718 667 }
719 668
720   -extern char szFileName[MAX_PATH];
  669 +//extern char szFileName[MAX_PATH];
721 670
722 671 int szFileName_check(char* fileName)
723 672 {
... ... @@ -769,87 +718,111 @@ BOOL CALLBACK ToolbarProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
769 718 {
770 719 switch(LOWORD(wParam))
771 720 {
772   - case IDC_FONTBTN: // font button pressed
773   - {
774   - CHOOSEFONT cf = {0};
775   - LOGFONT lf;
776   -
777   - lf = LFTTYFONT(TTYInfo);
778   - cf.lStructSize = sizeof(CHOOSEFONT);
779   - cf.hwndOwner = hWndDlg;
780   - cf.lpLogFont = &lf;
781   - cf.rgbColors = FGCOLOR(TTYInfo);
782   - cf.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS | CF_FIXEDPITCHONLY | \
783   - CF_EFFECTS;
784   -
785   - if (!ChooseFont(&cf))
  721 + case IDC_BTN_STOPFLASH:
  722 + TransferFileTextEnd();
786 723 break;
787   -
788   - InitNewFont(lf, cf.rgbColors);
789   -
790   - //
791   - // fix scroll bar sizes since we may have more or less pixels per
792   - // character now
793   - //
794   - SizeTTY(ghWndTTY, (WORD)XSIZE(TTYInfo), (WORD)YSIZE(TTYInfo));
795   -
796   - //
797   - // repaint screen contents
798   - //
799   - InvalidateRect(ghWndTTY, NULL, TRUE);
800   -
801   - //
802   - // kill old cursor
803   - //
804   - KillTTYFocus(ghWndTTY);
805   -
806   - //
807   - // create new cursor
808   - //
809   - SetTTYFocus(ghWndTTY);
810   - }
811   - fRet = FALSE;
812   - break;
813   -
814   - case IDC_SENDBTN: // send button pressed
815   - if (!EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_PORTCOMBO), FALSE))
  724 + case IDC_BTN_CONNECT_UART:
  725 + if (CONNECTED(TTYInfo))
816 726 {
817   - EnableWindow(GetDlgItem(ghWndToolbarDlg, IDC_PORTCOMBO), TRUE);
818   - MessageBox(NULL,"Please connect port!\r\n","Warring",MB_OK);
819   - fRet = FALSE;
820   - break;
821   - }
822   -
823   - if (szFileName_check(szFileName))
824   - {
825   - EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_SENDBTN), FALSE);
826   - // EnableWindow(GetDlgItem(ghWndToolbarDlg, IDC_PORTCOMBO), FALSE);
827   - TransferFileTextStart(szFileName);
  727 + if (BreakDownCommPort())
  728 + ChangeConnection(ghWndToolbarDlg, CONNECTED(TTYInfo));
  729 + SetWindowText(GetDlgItem(ghWndToolbarDlg, IDC_BTN_CONNECT_UART), "Connect");
828 730 }
829 731 else
830   - {
831   - /*MessageBox(NULL,"-_-","test3", MB_OK);*/
832   - ErrorReporter("Please select file!\r\n");
  732 + {
  733 + if (SetupCommPort() != NULL)
  734 + ChangeConnection(ghWndToolbarDlg, CONNECTED(TTYInfo));
  735 + SetWindowText(GetDlgItem(ghWndToolbarDlg, IDC_BTN_CONNECT_UART), "Disconnect");
833 736 }
834   -
835   - fRet = FALSE;
836   - break;
837   -
838   - case IDC_COMMEVENTSBTN: // comm events button pressed
839   - DialogBox(ghInst, MAKEINTRESOURCE(IDD_COMMEVENTSDLG), ghwndMain, CommEventsProc);
840   - fRet = FALSE;
841   - break;
842   -
843   - case IDC_FLOWCONTROLBTN:
844   - DialogBox(ghInst, MAKEINTRESOURCE(IDD_FLOWCONTROLDLG), ghwndMain, FlowControlProc);
845   - fRet = FALSE;
846   - break;
847   -
848   - case IDC_TIMEOUTSBTN:
849   - DialogBox(ghInst, MAKEINTRESOURCE(IDD_TIMEOUTSDLG), ghwndMain, TimeoutsProc);
850   - break;
851   - fRet = FALSE;
  737 + break;
  738 + //case IDC_FONTBTN: // font button pressed
  739 + //CHOOSEFONT cf = {0};
  740 + //LOGFONT lf;
  741 + //lf = LFTTYFONT(TTYInfo);
  742 + //cf.lStructSize = sizeof(CHOOSEFONT);
  743 + //cf.hwndOwner = hWndDlg;
  744 + //cf.lpLogFont = &lf;
  745 + //cf.rgbColors = FGCOLOR(TTYInfo);
  746 + //cf.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS | CF_FIXEDPITCHONLY |CF_EFFECTS;
  747 + //if (!ChooseFont(&cf)) break;
  748 + //InitNewFont(lf, cf.rgbColors);
  749 + //SizeTTY(ghWndMessage, (WORD)XSIZE(TTYInfo), (WORD)YSIZE(TTYInfo));
  750 + //InvalidateRect(ghWndMessage, NULL, TRUE);
  751 + //KillTTYFocus(ghWndMessage);
  752 + //SetTTYFocus(ghWndMessage);
  753 + //fRet = FALSE;
  754 + //break;
  755 + case IDC_BUTTON2_SEC_BINFILE:
  756 + {
  757 + char *szFilter = "bin Files\0*.bin\0";
  758 + OPENFILENAME ofn = { 0 };
  759 + ofn.lStructSize = sizeof(OPENFILENAME);
  760 + ofn.hwndOwner = ghWndToolbarDlg;
  761 + ofn.lpstrFilter = szFilter;
  762 + ofn.lpstrFile = TTYInfo.szFileName;
  763 + ofn.nMaxFile = MAX_PATH;
  764 + ofn.lpstrTitle = "Select File";
  765 + ofn.Flags = OFN_FILEMUSTEXIST;
  766 + if (!GetOpenFileName(&ofn)) return;
  767 + if (strlen(TTYInfo.szFileName) != 0)
  768 + {
  769 + //DWORD dwPacketSize, dwMaxPackets;
  770 + SetWindowText(GetDlgItem(ghWndToolbarDlg, IDC_STATIC_BINPATH), TTYInfo.szFileName);
  771 + //ShowWindow(GetDlgItem(hWndDlg, IDC_BUTTON2_SEC_BINFILE), 0);
  772 + TTYInfo.hFile = OpenTheFile(TTYInfo.szFileName);
  773 + if (TTYInfo.hFile == INVALID_HANDLE_VALUE)
  774 + {
  775 + memcpy(TTYInfo.szFileName,0,MAX_PATH);
  776 + return;
  777 + }
  778 + // set up transfer metrics
  779 + if (!GetTransferSizes(TTYInfo.hFile, &TTYInfo.dwPacketSize, &TTYInfo.dwMaxPackets, &TTYInfo.dwFileSize))
  780 + {
  781 + memcpy(TTYInfo.szFileName,0,MAX_PATH);
  782 + return;
  783 + }
  784 + memset(TTYInfo.buff_Binfile,0,TTYInfo.dwFileSize);
  785 + ReadFile(TTYInfo.hFile, TTYInfo.buff_Binfile, TTYInfo.dwFileSize, &TTYInfo.dwRead, NULL);
  786 + if (TTYInfo.dwRead != TTYInfo.dwFileSize)
  787 + ErrorReporter("file err!\r\n");
  788 + else
  789 + OutputAclorBuffer("Load file sucess!\r\n",RGB(255, 255, 255));
  790 + }
  791 + }
852 792 break;
  793 + //case IDC_SENDBTN: // send button pressed
  794 + // if (!EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_PORTCOMBO), FALSE))
  795 + // {
  796 + // EnableWindow(GetDlgItem(ghWndToolbarDlg, IDC_PORTCOMBO), TRUE);
  797 + // MessageBox(NULL,"Please connect port!\r\n","Warring",MB_OK);
  798 + // fRet = FALSE;
  799 + // break;
  800 + // }
  801 + // if (strlen(TTYInfo.szFileName) >0)
  802 + // {
  803 + // EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_SENDBTN), FALSE);
  804 + // TransferFileTextStart(TTYInfo.szFileName);
  805 + // }
  806 + // else
  807 + // ErrorReporter("Please select file!\r\n");
  808 + // fRet = FALSE;
  809 + //break;
  810 + //
  811 + //case IDC_COMMEVENTSBTN: // comm events button pressed
  812 + //DialogBox(ghInst, MAKEINTRESOURCE(IDD_COMMEVENTSDLG), ghwndMain, CommEventsProc);
  813 + //fRet = FALSE;
  814 + //break;
  815 +
  816 + //case IDC_FLOWCONTROLBTN:
  817 + //DialogBox(ghInst, MAKEINTRESOURCE(IDD_FLOWCONTROLDLG), ghwndMain, FlowControlProc);
  818 + //fRet = FALSE;
  819 + //break;
  820 +
  821 + //case IDC_TIMEOUTSBTN:
  822 + //DialogBox(ghInst, MAKEINTRESOURCE(IDD_TIMEOUTSDLG), ghwndMain, TimeoutsProc);
  823 + //break;
  824 + //fRet = FALSE;
  825 + //break;
853 826
854 827 default: // some other control has been modified
855 828 if (CONNECTED(TTYInfo))
... ... @@ -1058,46 +1031,46 @@ HISTORY: Date: Author: Comment:
1058 1031 10/27/95 AllenD Wrote it
1059 1032
1060 1033 -----------------------------------------------------------------------------*/
1061   -BOOL CALLBACK CommEventsProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lparam)
1062   -{
1063   - switch(uMessage)
1064   - {
1065   - case WM_INITDIALOG: // init controls
1066   - InitCommEventsDlg(hdlg, EVENTFLAGS(TTYInfo));
1067   - break;
1068   -
1069   - case WM_COMMAND:
1070   - switch(LOWORD(wparam))
1071   - {
1072   - case IDOK:
1073   - SaveCommEventsDlg(hdlg);
1074   -
1075   - //
1076   - // FALL THROUGH
1077   - //
1078   -
1079   - case IDCANCEL:
1080   - EndDialog(hdlg, LOWORD(wparam));
1081   - return TRUE;
1082   -
1083   - case IDC_DEFAULTSBTN:
1084   - InitCommEventsDlg(hdlg, EVENTFLAGS_DEFAULT);
1085   - return TRUE;
1086   -
1087   - case IDC_EVRXFLAGBTN:
1088   - EnableWindow(GetDlgItem(hdlg, IDC_FLAGEDIT), IsDlgButtonChecked(hdlg, IDC_EVRXFLAGBTN));
1089   - EnableWindow(GetDlgItem(hdlg, IDC_FLAGCHAR), IsDlgButtonChecked(hdlg, IDC_EVRXFLAGBTN));
1090   - return TRUE;
1091   -
1092   - case IDC_FLAGEDIT:
1093   - GetHexControl(hdlg, IDC_FLAGEDIT, IDC_FLAGCHAR);
1094   - return TRUE;
1095   - }
1096   - break;
1097   - }
1098   -
1099   - return FALSE;
1100   -}
  1034 +//BOOL CALLBACK CommEventsProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lparam)
  1035 +//{
  1036 +// switch(uMessage)
  1037 +// {
  1038 +// case WM_INITDIALOG: // init controls
  1039 +// InitCommEventsDlg(hdlg, EVENTFLAGS(TTYInfo));
  1040 +// break;
  1041 +//
  1042 +// case WM_COMMAND:
  1043 +// switch(LOWORD(wparam))
  1044 +// {
  1045 +// case IDOK:
  1046 +// SaveCommEventsDlg(hdlg);
  1047 +//
  1048 +// //
  1049 +// // FALL THROUGH
  1050 +// //
  1051 +//
  1052 +// case IDCANCEL:
  1053 +// EndDialog(hdlg, LOWORD(wparam));
  1054 +// return TRUE;
  1055 +//
  1056 +// case IDC_DEFAULTSBTN:
  1057 +// InitCommEventsDlg(hdlg, EVENTFLAGS_DEFAULT);
  1058 +// return TRUE;
  1059 +//
  1060 +// case IDC_EVRXFLAGBTN:
  1061 +// EnableWindow(GetDlgItem(hdlg, IDC_FLAGEDIT), IsDlgButtonChecked(hdlg, IDC_EVRXFLAGBTN));
  1062 +// EnableWindow(GetDlgItem(hdlg, IDC_FLAGCHAR), IsDlgButtonChecked(hdlg, IDC_EVRXFLAGBTN));
  1063 +// return TRUE;
  1064 +//
  1065 +// case IDC_FLAGEDIT:
  1066 +// GetHexControl(hdlg, IDC_FLAGEDIT, IDC_FLAGCHAR);
  1067 +// return TRUE;
  1068 +// }
  1069 +// break;
  1070 +// }
  1071 +//
  1072 +// return FALSE;
  1073 +//}
1101 1074
1102 1075 /*-----------------------------------------------------------------------------
1103 1076
... ... @@ -1340,47 +1313,47 @@ HISTORY: Date: Author: Comment:
1340 1313 10/27/95 AllenD Wrote it
1341 1314
1342 1315 -----------------------------------------------------------------------------*/
1343   -BOOL CALLBACK FlowControlProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lparam)
1344   -{
1345   - switch(uMessage)
1346   - {
1347   - case WM_INITDIALOG: // init controls
1348   - InitFlowControlDlg(hdlg);
1349   - break;
1350   -
1351   - case WM_COMMAND:
1352   - switch(LOWORD(wparam))
1353   - {
1354   - case IDOK:
1355   - SaveFlowControlDlg(hdlg);
1356   - //
1357   - // FALL THROUGH
1358   - //
1359   -
1360   - case IDCANCEL:
1361   - EndDialog(hdlg, LOWORD(wparam));
1362   - return TRUE;
1363   -
1364   - case IDC_RTSCTSBTN:
1365   - case IDC_DTRDSRBTN:
1366   - case IDC_XOFFXONBTN:
1367   - case IDC_NONEBTN:
1368   - FlowDefault(hdlg, LOWORD(wparam));
1369   - return TRUE;
1370   -
1371   - case IDC_XONCHAREDIT:
1372   - GetHexControl(hdlg, IDC_XONCHAREDIT, IDC_XONCHARDISP);
1373   - return TRUE;
1374   -
1375   - case IDC_XOFFCHAREDIT:
1376   - GetHexControl(hdlg, IDC_XOFFCHAREDIT, IDC_XOFFCHARDISP);
1377   - return TRUE;
1378   - }
1379   - break;
1380   - }
1381   -
1382   - return FALSE;
1383   -}
  1316 +//BOOL CALLBACK FlowControlProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lparam)
  1317 +//{
  1318 +// switch(uMessage)
  1319 +// {
  1320 +// case WM_INITDIALOG: // init controls
  1321 +// InitFlowControlDlg(hdlg);
  1322 +// break;
  1323 +//
  1324 +// case WM_COMMAND:
  1325 +// switch(LOWORD(wparam))
  1326 +// {
  1327 +// case IDOK:
  1328 +// SaveFlowControlDlg(hdlg);
  1329 +// //
  1330 +// // FALL THROUGH
  1331 +// //
  1332 +//
  1333 +// case IDCANCEL:
  1334 +// EndDialog(hdlg, LOWORD(wparam));
  1335 +// return TRUE;
  1336 +//
  1337 +// case IDC_RTSCTSBTN:
  1338 +// case IDC_DTRDSRBTN:
  1339 +// case IDC_XOFFXONBTN:
  1340 +// case IDC_NONEBTN:
  1341 +// FlowDefault(hdlg, LOWORD(wparam));
  1342 +// return TRUE;
  1343 +//
  1344 +// case IDC_XONCHAREDIT:
  1345 +// GetHexControl(hdlg, IDC_XONCHAREDIT, IDC_XONCHARDISP);
  1346 +// return TRUE;
  1347 +//
  1348 +// case IDC_XOFFCHAREDIT:
  1349 +// GetHexControl(hdlg, IDC_XOFFCHAREDIT, IDC_XOFFCHARDISP);
  1350 +// return TRUE;
  1351 +// }
  1352 +// break;
  1353 +// }
  1354 +//
  1355 +// return FALSE;
  1356 +//}
1384 1357
1385 1358 /*-----------------------------------------------------------------------------
1386 1359
... ... @@ -1482,37 +1455,37 @@ HISTORY: Date: Author: Comment:
1482 1455 10/27/95 AllenD Wrote it
1483 1456
1484 1457 -----------------------------------------------------------------------------*/
1485   -BOOL CALLBACK TimeoutsProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lparam)
1486   -{
1487   - switch(uMessage)
1488   - {
1489   - case WM_INITDIALOG: // init controls
1490   - InitTimeoutsDlg(hdlg, TIMEOUTSNEW(TTYInfo));
1491   - break;
1492   -
1493   - case WM_COMMAND:
1494   - switch(LOWORD(wparam))
1495   - {
1496   - case IDOK:
1497   - SaveTimeoutsDlg(hdlg);
1498   -
1499   - //
1500   - // FALL THROUGH
1501   - //
1502   -
1503   - case IDCANCEL:
1504   - EndDialog(hdlg, LOWORD(wparam));
1505   - return TRUE;
1506   -
1507   - case IDC_DEFAULTSBTN:
1508   - InitTimeoutsDlg(hdlg, gTimeoutsDefault);
1509   - return TRUE;
1510   - }
1511   - break;
1512   - }
1513   -
1514   - return FALSE;
1515   -}
  1458 +//BOOL CALLBACK TimeoutsProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lparam)
  1459 +//{
  1460 +// switch(uMessage)
  1461 +// {
  1462 +// case WM_INITDIALOG: // init controls
  1463 +// InitTimeoutsDlg(hdlg, TIMEOUTSNEW(TTYInfo));
  1464 +// break;
  1465 +//
  1466 +// case WM_COMMAND:
  1467 +// switch(LOWORD(wparam))
  1468 +// {
  1469 +// case IDOK:
  1470 +// SaveTimeoutsDlg(hdlg);
  1471 +//
  1472 +// //
  1473 +// // FALL THROUGH
  1474 +// //
  1475 +//
  1476 +// case IDCANCEL:
  1477 +// EndDialog(hdlg, LOWORD(wparam));
  1478 +// return TRUE;
  1479 +//
  1480 +// case IDC_DEFAULTSBTN:
  1481 +// InitTimeoutsDlg(hdlg, gTimeoutsDefault);
  1482 +// return TRUE;
  1483 +// }
  1484 +// break;
  1485 +// }
  1486 +//
  1487 +// return FALSE;
  1488 +//}
1516 1489
1517 1490 BOOL CALLBACK GetADWORDProc(HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam)
1518 1491 {
... ...
... ... @@ -127,34 +127,37 @@ BOOL CALLBACK StatusDlgProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
127 127 SendMessage(GetDlgItem(hWndDlg, IDC_STATUSEDIT), WM_SETFONT, (WPARAM)ghFontStatus, 0);
128 128 InitStatusMessage();
129 129 break;
  130 + case WM_SIZE:
  131 + MoveWindow(GetDlgItem(ghWndStatusDlg, IDC_TRANSFERPROGRESS), 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
  132 + break;
130 133
131 134 case WM_COMMAND:
132 135 {
133 136 switch(LOWORD(wParam))
134 137 {
135 138 case IDC_ABORTBTN:
136   - SendMessage(ghwndMain, WM_COMMAND, ID_TRANSFER_ABORTSENDING, MAKELPARAM(IDC_ABORTBTN,0) );
  139 + //SendMessage(ghwndMain, WM_COMMAND, ID_TRANSFER_ABORTSENDING, MAKELPARAM(IDC_ABORTBTN,0) );
137 140 fRet = TRUE;
138 141 break;
139 142
140   - case IDC_STATCTS:
141   - case IDC_STATDSR:
142   - case IDC_STATRING:
143   - case IDC_STATRLSD:
144   - CheckModemStatus(TRUE);
145   - fRet = TRUE;
146   - break;
147   -
148   - case IDC_CTSHOLDCHK:
149   - case IDC_DSRHOLDCHK:
150   - case IDC_RLSDHOLDCHK:
151   - case IDC_XOFFHOLDCHK:
152   - case IDC_XOFFSENTCHK:
153   - case IDC_EOFSENTCHK:
154   - case IDC_TXIMCHK:
155   - CheckComStat(TRUE);
156   - fRet = TRUE;
157   - break;
  143 + //case IDC_STATCTS:
  144 + //case IDC_STATDSR:
  145 + //case IDC_STATRING:
  146 + //case IDC_STATRLSD:
  147 + // CheckModemStatus(TRUE);
  148 + // fRet = TRUE;
  149 + // break;
  150 +
  151 + //case IDC_CTSHOLDCHK:
  152 + //case IDC_DSRHOLDCHK:
  153 + //case IDC_RLSDHOLDCHK:
  154 + //case IDC_XOFFHOLDCHK:
  155 + //case IDC_XOFFSENTCHK:
  156 + //case IDC_EOFSENTCHK:
  157 + //case IDC_TXIMCHK:
  158 + // CheckComStat(TRUE);
  159 + // fRet = TRUE;
  160 + // break;
158 161
159 162 default:
160 163 break;
... ... @@ -375,8 +378,8 @@ void ReportModemStatus(DWORD dwModemStatus)
375 378 fRING = fStat[2] = MS_RING_ON & dwModemStatus;
376 379 fRLSD = fStat[3] = MS_RLSD_ON & dwModemStatus;
377 380
378   - for (i = IDC_STATCTS; i <= IDC_STATRLSD; i++)
379   - CheckDlgButton(ghWndStatusDlg, i, fStat[i-IDC_STATCTS] ? 1 : 0);
  381 + //for (i = IDC_STATCTS; i <= IDC_STATRLSD; i++)
  382 + // CheckDlgButton(ghWndStatusDlg, i, fStat[i-IDC_STATCTS] ? 1 : 0);
380 383
381 384 return;
382 385 }
... ... @@ -441,17 +444,17 @@ HISTORY: Date: Author: Comment:
441 444 -----------------------------------------------------------------------------*/
442 445 void ReportComStat(COMSTAT ComStat)
443 446 {
444   - CheckDlgButton(ghWndStatusDlg, IDC_CTSHOLDCHK, ComStat.fCtsHold);
445   - CheckDlgButton(ghWndStatusDlg, IDC_DSRHOLDCHK, ComStat.fDsrHold);
446   - CheckDlgButton(ghWndStatusDlg, IDC_RLSDHOLDCHK, ComStat.fRlsdHold);
447   - CheckDlgButton(ghWndStatusDlg, IDC_XOFFHOLDCHK, ComStat.fXoffHold);
448   - CheckDlgButton(ghWndStatusDlg, IDC_XOFFSENTCHK, ComStat.fXoffSent);
449   - CheckDlgButton(ghWndStatusDlg, IDC_EOFSENTCHK, ComStat.fEof);
450   - CheckDlgButton(ghWndStatusDlg, IDC_TXIMCHK, ComStat.fTxim);
451   -
452   - SetDlgItemInt(ghWndStatusDlg, IDC_TXCHAREDIT, ComStat.cbOutQue, FALSE);
453   - SetDlgItemInt(ghWndStatusDlg, IDC_RXCHAREDIT, ComStat.cbInQue, FALSE);
454   -
  447 +// CheckDlgButton(ghWndStatusDlg, IDC_CTSHOLDCHK, ComStat.fCtsHold);
  448 +// CheckDlgButton(ghWndStatusDlg, IDC_DSRHOLDCHK, ComStat.fDsrHold);
  449 +// CheckDlgButton(ghWndStatusDlg, IDC_RLSDHOLDCHK, ComStat.fRlsdHold);
  450 +// CheckDlgButton(ghWndStatusDlg, IDC_XOFFHOLDCHK, ComStat.fXoffHold);
  451 +// CheckDlgButton(ghWndStatusDlg, IDC_XOFFSENTCHK, ComStat.fXoffSent);
  452 +// CheckDlgButton(ghWndStatusDlg, IDC_EOFSENTCHK, ComStat.fEof);
  453 +// CheckDlgButton(ghWndStatusDlg, IDC_TXIMCHK, ComStat.fTxim);
  454 +//
  455 +// SetDlgItemInt(ghWndStatusDlg, IDC_TXCHAREDIT, ComStat.cbOutQue, FALSE);
  456 +// SetDlgItemInt(ghWndStatusDlg, IDC_RXCHAREDIT, ComStat.cbInQue, FALSE);
  457 +//
455 458 return;
456 459 }
457 460
... ...
... ... @@ -40,7 +40,6 @@
40 40 //
41 41 // Globals used in this file only
42 42 //
43   -HANDLE hFile;
44 43 HANDLE hTransferAbortEvent;
45 44 HANDLE hTransferThread;
46 45 UINT uTimerId;
... ... @@ -84,28 +83,24 @@ void TransferRepeatCreate(LPCTSTR lpszFileName, DWORD dwFrequency)
84 83 {
85 84 HMENU hMenu;
86 85 UINT MenuFlags ;
87   - DWORD dwFileSize;
88   - DWORD dwMaxPackets;
89   - DWORD dwPacketSize;
90   - DWORD dwRead;
  86 + //DWORD dwFileSize;
  87 + //DWORD dwMaxPackets;
  88 + //DWORD dwPacketSize;
  89 + //DWORD dwRead;
91 90
92 91 //
93 92 // open the file
94 93 //
95   - hFile = OpenTheFile(lpszFileName);
96   - if (hFile == INVALID_HANDLE_VALUE)
97   - return;
98   -
99 94 //
100 95 // modify transfer menu
101 96 //
102 97 hMenu = GetMenu(ghwndMain);
103 98 MenuFlags = MF_DISABLED | MF_GRAYED;
104   - EnableMenuItem(hMenu, ID_TRANSFER_SENDFILETEXT, MenuFlags);
105   - EnableMenuItem(hMenu, IDC_SENDBTN, MenuFlags);
106   - EnableMenuItem(hMenu, ID_TRANSFER_SENDREPEATEDLY, MenuFlags);
107   - EnableMenuItem(hMenu, ID_TRANSFER_ABORTREPEATEDSENDING, MF_ENABLED);
108   - EnableMenuItem(hMenu, ID_TRANSFER_RECEIVEFILETEXT, MenuFlags);
  99 + //EnableMenuItem(hMenu, ID_TRANSFER_SENDFILETEXT, MenuFlags);
  100 + //EnableMenuItem(hMenu, IDC_SENDBTN, MenuFlags);
  101 + //EnableMenuItem(hMenu, ID_TRANSFER_SENDREPEATEDLY, MenuFlags);
  102 + //EnableMenuItem(hMenu, ID_TRANSFER_ABORTREPEATEDSENDING, MF_ENABLED);
  103 + //EnableMenuItem(hMenu, ID_TRANSFER_RECEIVEFILETEXT, MenuFlags);
109 104
110 105 //
111 106 // enable abort button and progress bar
... ... @@ -113,13 +108,9 @@ void TransferRepeatCreate(LPCTSTR lpszFileName, DWORD dwFrequency)
113 108 SetWindowText(GetDlgItem(ghWndStatusDlg, IDC_ABORTBTN), "Abort Tx");
114 109 ShowWindow(GetDlgItem(ghWndStatusDlg, IDC_ABORTBTN), SW_SHOW);
115 110
116   - if (!GetTransferSizes(hFile, &dwPacketSize, &dwMaxPackets, &dwFileSize)) {
117   - TransferRepeatDestroy();
118   - return;
119   - }
120 111
121 112 // Allocate a buffer
122   - lpBuf = HeapAlloc(ghWriterHeap, 0, dwFileSize);
  113 + lpBuf = HeapAlloc(ghWriterHeap, 0, TTYInfo.dwFileSize);
123 114 if (lpBuf == NULL) {
124 115 ErrorReporter("HeapAlloc (data block from writer heap).\r\nFile is too large");
125 116 TransferRepeatDestroy();
... ... @@ -127,15 +118,15 @@ void TransferRepeatCreate(LPCTSTR lpszFileName, DWORD dwFrequency)
127 118 }
128 119
129 120 // fill the buffer
130   - if (!ReadFile(hFile, lpBuf, dwFileSize, &dwRead, NULL)) {
131   - ErrorReporter("Can't read from file\n");
132   - TransferRepeatDestroy();
133   - }
  121 + //if (!ReadFile(TTYInfo.hFile, lpBuf, TTYInfo.dwFileSize, &TTYInfo.dwRead, NULL)) {
  122 + // ErrorReporter("Can't read from file\n");
  123 + // TransferRepeatDestroy();
  124 + //}
134 125
135   - if (dwRead != dwFileSize)
136   - ErrorReporter("Didn't read entire file\n");
  126 + //if (dwRead != dwFileSize)
  127 + // ErrorReporter("Didn't read entire file\n");
137 128
138   - mmTimer = timeSetEvent((UINT) dwFrequency, 10, TransferRepeatDo, dwRead, TIME_PERIODIC);
  129 + mmTimer = timeSetEvent((UINT) dwFrequency, 10, TransferRepeatDo, TTYInfo.dwRead, TIME_PERIODIC);
139 130 if (mmTimer == (MMRESULT) NULL) {
140 131 ErrorReporter("Could not create mm timer");
141 132 TransferRepeatDestroy();
... ... @@ -174,7 +165,7 @@ void TransferRepeatDestroy()
174 165 }
175 166
176 167 // close the file
177   - CloseHandle(hFile);
  168 + CloseHandle(TTYInfo.hFile);
178 169
179 170 // inform writer to abort all pending write requests
180 171 if (!WriterAddFirstNodeTimeout(WRITE_ABORT, 0, 0, NULL, NULL, NULL, 500))
... ... @@ -192,11 +183,11 @@ void TransferRepeatDestroy()
192 183 //
193 184 hMenu = GetMenu(ghwndMain);
194 185 MenuFlags = MF_ENABLED;
195   - EnableMenuItem(hMenu, ID_TRANSFER_ABORTREPEATEDSENDING, MF_DISABLED | MF_GRAYED);
196   - EnableMenuItem(hMenu, ID_TRANSFER_SENDFILETEXT, MenuFlags);
197   - EnableMenuItem(hMenu, IDC_SENDBTN, MenuFlags);
198   - EnableMenuItem(hMenu, ID_TRANSFER_SENDREPEATEDLY, MenuFlags);
199   - EnableMenuItem(hMenu, ID_TRANSFER_RECEIVEFILETEXT, MenuFlags);
  186 + //EnableMenuItem(hMenu, ID_TRANSFER_ABORTREPEATEDSENDING, MF_DISABLED | MF_GRAYED);
  187 + //EnableMenuItem(hMenu, ID_TRANSFER_SENDFILETEXT, MenuFlags);
  188 + //EnableMenuItem(hMenu, IDC_SENDBTN, MenuFlags);
  189 + //EnableMenuItem(hMenu, ID_TRANSFER_SENDREPEATEDLY, MenuFlags);
  190 + //EnableMenuItem(hMenu, ID_TRANSFER_RECEIVEFILETEXT, MenuFlags);
200 191
201 192 ShowWindow(GetDlgItem(ghWndStatusDlg, IDC_ABORTBTN), SW_HIDE);
202 193
... ... @@ -218,12 +209,12 @@ HISTORY: Date: Author: Comment:
218 209 -----------------------------------------------------------------------------*/
219 210 void CALLBACK TransferRepeatDo( UINT uTimerId,
220 211 UINT uRes,
221   - DWORD dwFileSize,
  212 + //DWORD dwFileSize,
222 213 DWORD dwRes1,
223 214 DWORD dwRes2)
224 215 {
225   - if (!WriterAddNewNodeTimeout(WRITE_BLOCK, dwFileSize, 0, lpBuf, 0, 0, 10))
226   - PostMessage(ghwndMain, WM_COMMAND, ID_TRANSFER_ABORTSENDING, MAKELPARAM(IDC_ABORTBTN, 0) );
  216 + WriterAddNewNodeTimeout(WRITE_BLOCK, TTYInfo.dwFileSize, 0, lpBuf, 0, 0, 10);
  217 + // PostMessage(ghwndMain, WM_COMMAND, ID_TRANSFER_ABORTSENDING, MAKELPARAM(IDC_ABORTBTN, 0) );
227 218
228 219 return;
229 220 }
... ... @@ -252,20 +243,17 @@ void TransferFileTextStart(LPCTSTR lpstrFileName)
252 243 //
253 244 // open the file
254 245 //
255   - hFile = OpenTheFile(lpstrFileName);
256   - if (hFile == INVALID_HANDLE_VALUE)
257   - return;
258 246
259 247 //
260 248 // modify transfer menu
261 249 //
262 250 hMenu = GetMenu(ghwndMain);
263 251 MenuFlags = MF_DISABLED | MF_GRAYED;
264   - EnableMenuItem(hMenu, ID_TRANSFER_SENDFILETEXT, MenuFlags);
265   - EnableMenuItem(hMenu, IDC_SENDBTN, MenuFlags);
266   - EnableMenuItem(hMenu, ID_TRANSFER_SENDREPEATEDLY, MenuFlags);
267   - EnableMenuItem(hMenu, ID_TRANSFER_ABORTSENDING, MF_ENABLED);
268   - EnableMenuItem(hMenu, ID_TRANSFER_RECEIVEFILETEXT, MenuFlags);
  252 + //EnableMenuItem(hMenu, ID_TRANSFER_SENDFILETEXT, MenuFlags);
  253 + //EnableMenuItem(hMenu, IDC_SENDBTN, MenuFlags);
  254 + //EnableMenuItem(hMenu, ID_TRANSFER_SENDREPEATEDLY, MenuFlags);
  255 + //EnableMenuItem(hMenu, ID_TRANSFER_ABORTSENDING, MF_ENABLED);
  256 + //EnableMenuItem(hMenu, ID_TRANSFER_RECEIVEFILETEXT, MenuFlags);
269 257 //
270 258 // enable abort button and progress bar
271 259 //
... ... @@ -281,7 +269,7 @@ void TransferFileTextStart(LPCTSTR lpstrFileName)
281 269
282 270 hTransferThread = CreateThread(NULL, 0,
283 271 TransferThreadProc,
284   - (LPVOID) hFile, 0, &dwThreadId);
  272 + (LPVOID) TTYInfo.hFile, 0, &dwThreadId);
285 273
286 274 if (hTransferThread == NULL) {
287 275 ErrorReporter("CreateThread (Transfer Thread)");
... ... @@ -332,22 +320,22 @@ void TransferFileTextEnd()
332 320 //
333 321 hMenu = GetMenu(ghwndMain);
334 322 MenuFlags = MF_ENABLED;
335   - EnableMenuItem(hMenu, ID_TRANSFER_SENDFILETEXT, MenuFlags);
336   - EnableMenuItem(hMenu, IDC_SENDBTN, MenuFlags);
337   - EnableMenuItem(hMenu, ID_TRANSFER_SENDREPEATEDLY, MenuFlags);
338   - EnableMenuItem(hMenu, ID_TRANSFER_RECEIVEFILETEXT, MenuFlags);
339   - EnableMenuItem(hMenu, ID_TRANSFER_ABORTSENDING, MF_DISABLED | MF_GRAYED);
  323 + //EnableMenuItem(hMenu, ID_TRANSFER_SENDFILETEXT, MenuFlags);
  324 + //EnableMenuItem(hMenu, IDC_SENDBTN, MenuFlags);
  325 + //EnableMenuItem(hMenu, ID_TRANSFER_SENDREPEATEDLY, MenuFlags);
  326 + //EnableMenuItem(hMenu, ID_TRANSFER_RECEIVEFILETEXT, MenuFlags);
  327 + //EnableMenuItem(hMenu, ID_TRANSFER_ABORTSENDING, MF_DISABLED | MF_GRAYED);
340 328
341 329 //
342 330 // disable abort button and progress bar
343 331 //
344   - ShowWindow(GetDlgItem(ghWndStatusDlg, IDC_ABORTBTN), SW_HIDE);
345   - ShowWindow(GetDlgItem(ghWndStatusDlg, IDC_TRANSFERPROGRESS), SW_HIDE);
346   - EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_SENDBTN), TRUE);
  332 + //ShowWindow(GetDlgItem(ghWndStatusDlg, IDC_ABORTBTN), SW_HIDE);
  333 + //ShowWindow(GetDlgItem(ghWndStatusDlg, IDC_TRANSFERPROGRESS), SW_HIDE);
  334 +// EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_SENDBTN), TRUE);
347 335 //
348 336 // close the file
349 337 //
350   - CloseHandle(hFile);
  338 + CloseHandle(TTYInfo.hFile);
351 339 }
352 340
353 341
... ... @@ -384,16 +372,17 @@ void ReceiveFileText(LPCTSTR lpstrFileName)
384 372 */
385 373 hMenu = GetMenu(ghwndMain);
386 374 MenuFlags = MF_DISABLED | MF_GRAYED;
387   - EnableMenuItem(hMenu, ID_FILE_CONNECT, MenuFlags);
388   - EnableMenuItem(hMenu, ID_FILE_DISCONNECT, MenuFlags);
  375 + //EnableMenuItem(hMenu, ID_FILE_CONNECT, MenuFlags);
  376 + EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_BTN_CONNECT_UART), FALSE);
  377 + //EnableMenuItem(hMenu, ID_FILE_DISCONNECT, MenuFlags);
389 378
390 379 //
391 380 // disable transfer menu
392 381 //
393   - EnableMenuItem(hMenu, ID_TRANSFER_SENDFILETEXT, MenuFlags);
394   - EnableMenuItem(hMenu, IDC_SENDBTN, MenuFlags);
395   - EnableMenuItem(hMenu, ID_TRANSFER_RECEIVEFILETEXT, MenuFlags);
396   - EnableMenuItem(hMenu, ID_TRANSFER_SENDREPEATEDLY, MenuFlags);
  382 + //EnableMenuItem(hMenu, ID_TRANSFER_SENDFILETEXT, MenuFlags);
  383 + //EnableMenuItem(hMenu, IDC_SENDBTN, MenuFlags);
  384 + //EnableMenuItem(hMenu, ID_TRANSFER_RECEIVEFILETEXT, MenuFlags);
  385 + //EnableMenuItem(hMenu, ID_TRANSFER_SENDREPEATEDLY, MenuFlags);
397 386
398 387 //
399 388 // enable abort button and progress bar
... ... @@ -418,16 +407,16 @@ void ReceiveFileText(LPCTSTR lpstrFileName)
418 407 //
419 408 // enable transfer menu
420 409 //
421   - EnableMenuItem(hMenu, ID_TRANSFER_SENDFILETEXT, MenuFlags);
422   - EnableMenuItem(hMenu, IDC_SENDBTN, MenuFlags);
423   - EnableMenuItem(hMenu, ID_TRANSFER_RECEIVEFILETEXT, MenuFlags);
424   - EnableMenuItem(hMenu, ID_TRANSFER_SENDREPEATEDLY, MenuFlags);
  410 + //EnableMenuItem(hMenu, ID_TRANSFER_SENDFILETEXT, MenuFlags);
  411 + //EnableMenuItem(hMenu, IDC_SENDBTN, MenuFlags);
  412 + //EnableMenuItem(hMenu, ID_TRANSFER_RECEIVEFILETEXT, MenuFlags);
  413 + //EnableMenuItem(hMenu, ID_TRANSFER_SENDREPEATEDLY, MenuFlags);
425 414
426 415 //
427 416 // hide abort button and progress bar
428 417 //
429   - ShowWindow(GetDlgItem(ghWndStatusDlg, IDC_ABORTBTN), SW_HIDE);
430   - ShowWindow(GetDlgItem(ghWndStatusDlg, IDC_TRANSFERPROGRESS), SW_HIDE);
  418 + //ShowWindow(GetDlgItem(ghWndStatusDlg, IDC_ABORTBTN), SW_HIDE);
  419 + //ShowWindow(GetDlgItem(ghWndStatusDlg, IDC_TRANSFERPROGRESS), SW_HIDE);
431 420
432 421 gfAbortTransfer = FALSE;
433 422
... ... @@ -452,12 +441,8 @@ HISTORY: Date: Author: Comment:
452 441 HANDLE OpenTheFile(LPCTSTR lpFName)
453 442 {
454 443 HANDLE hTemp;
455   -
456 444 hTemp = CreateFile(lpFName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0,NULL);
457   -
458   - if (hTemp == INVALID_HANDLE_VALUE)
459   - ErrorReporter("CreateFile");
460   -
  445 + if (hTemp == INVALID_HANDLE_VALUE) ErrorReporter("CreateFile");
461 446 return hTemp;
462 447 }
463 448
... ... @@ -713,27 +698,24 @@ typedef struct {
713 698
714 699 const char dft_bdaddr[6] = {0x00,0x00,0x00,0x3F,0x9f,0x94};
715 700
716   -int fileCheck(char *fData,char *dataLen)
  701 +int fileCheck(,void)
717 702 {
718 703 int i;
719 704 /*BOOL flag = FALSE;*/
720 705 int ret = FILE_CHCK_SUCCESSFUL;
721   - U32 *p1 = (U32 *)fData;
  706 + U32 *p1 = (U32 *)TTYInfo.buff_Binfile;
722 707 BOOT_HEADER *p_header;
723   - char *p = fData+MAC_ADDR_OFFSET+BAUDRATE_DET_DATA_LEN+HEADER_LEN;
  708 + char *p = TTYInfo.buff_Binfile+MAC_ADDR_OFFSET+BAUDRATE_DET_DATA_LEN+HEADER_LEN;
724 709 unsigned char baaddr[6];
725 710 LARGE_INTEGER ticks;
726 711
727   - if (dataLen < MAC_ADDR_OFFSET + BAUDRATE_DET_DATA_LEN + HEADER_LEN + 0x2000)
  712 + if (TTYInfo.dwFileSize < MAC_ADDR_OFFSET + BAUDRATE_DET_DATA_LEN + HEADER_LEN + 0x2000)
728 713 {
729 714 /*flag = TRUE;*/
730 715
731 716 return FILE_CHCK_SUCCESSFUL;
732 717 }
733   -
734   -
735   -
736   - p1 = (U32 *)fData;
  718 + p1 = (U32 *)TTYInfo.buff_Binfile;
737 719
738 720 memcpy(baaddr,dft_bdaddr,sizeof(baaddr));
739 721
... ... @@ -747,7 +729,7 @@ int fileCheck(char *fData,char *dataLen)
747 729 }
748 730 }
749 731
750   - p_header = (BOOT_HEADER *)(fData+BAUDRATE_DET_DATA_LEN);
  732 + p_header = (BOOT_HEADER *)(TTYInfo.buff_Binfile+BAUDRATE_DET_DATA_LEN);
751 733 /***********header check*********************/
752 734 if (ret == FILE_CHCK_SUCCESSFUL)
753 735 {
... ... @@ -755,7 +737,7 @@ int fileCheck(char *fData,char *dataLen)
755 737 {
756 738 ret = WRONG_FILE_FORMAT;
757 739 }
758   - else if (p_header->rx_total_bytes != (dataLen - BAUDRATE_DET_DATA_LEN - sizeof(BOOT_HEADER)))
  740 + else if (p_header->rx_total_bytes != (TTYInfo.dwFileSize - BAUDRATE_DET_DATA_LEN - sizeof(BOOT_HEADER)))
759 741 {
760 742 ret = WRONG_FILE_FORMAT;
761 743 }
... ... @@ -765,7 +747,7 @@ int fileCheck(char *fData,char *dataLen)
765 747 if (ret == FILE_CHCK_SUCCESSFUL)
766 748 {
767 749 int checksum = 0;
768   - p1 = (U32*)(fData + BAUDRATE_DET_DATA_LEN + sizeof(BOOT_HEADER));
  750 + p1 = (U32*)(TTYInfo.buff_Binfile + BAUDRATE_DET_DATA_LEN + sizeof(BOOT_HEADER));
769 751 for(i=0;i<(p_header->rx_total_bytes-4)/4;i++)
770 752 {
771 753 checksum += *p1++;
... ... @@ -786,8 +768,10 @@ int fileCheck(char *fData,char *dataLen)
786 768 baaddr[1] = (unsigned char)(ticks.LowPart>>8)&0x000000ff;
787 769 baaddr[2] = (unsigned char)(ticks.LowPart>>16)&0x000000ff;
788 770
789   - wsprintf(szMessage, "bt bdaddr:0x%02x%02x%02x%02x%02x%02x\r\n",baaddr[5],baaddr[4],baaddr[3],baaddr[2],baaddr[1],baaddr[0]);
790   - UpdateStatus(szMessage);
  771 + memset(szMessage,0,70);
  772 + wsprintf(szMessage, "0x%02x%02x%02x%02x%02x%02x\r\n",baaddr[5],baaddr[4],baaddr[3],baaddr[2],baaddr[1],baaddr[0]);
  773 + OutputABuffer(szMessage);
  774 + //UpdateStatus(szMessage);
791 775 }
792 776 else
793 777 {
... ... @@ -815,29 +799,18 @@ int fileCheck(char *fData,char *dataLen)
815 799 *p++ = 0;
816 800 *p++ = 0;
817 801 *p++ = 0;
818   -
819   -// bt mac id
820   -/* *p++ = 0x11;
821   - *p++ = 0x12;
822   - *p++ = 0x13;
823   - *p++ = 0x14;
824   - *p++ = 0x15;
825   - *p++ = 0x16;*/
826 802 memcpy(p,baaddr,sizeof(baaddr));
827 803 p+=6;
828 804
829 805 //if (flag)
830 806 //{
831   - // OutputDebugString("àÓ\n");
832   - p = fData + MAC_ADDR_OFFSET + BAUDRATE_DET_DATA_LEN + HEADER_LEN + 0X1000;
  807 + p = TTYInfo.buff_Binfile + MAC_ADDR_OFFSET + BAUDRATE_DET_DATA_LEN + HEADER_LEN + 0X1000;
833 808 /*}
834 809 else
835 810 {
836 811 OutputDebugString("àÓàÓàÓ\n");
837 812 p = fData + MAC_ADDR_OFFSET + 0X1000 + 0xb20;
838 813 }*/
839   -
840   -// "Optek Bt\0\0"
841 814 *p++ = 'O';
842 815 *p++ = 'p';
843 816 *p++ = 't';
... ... @@ -846,7 +819,6 @@ int fileCheck(char *fData,char *dataLen)
846 819 *p++ = ' ';
847 820 *p++ = 'B';
848 821 *p++ = 't';
849   - // *p++ = 0;
850 822
851 823 //u32 wr_cn;
852 824 *p++ = 0;
... ... @@ -859,36 +831,15 @@ int fileCheck(char *fData,char *dataLen)
859 831 *p++ = 0;
860 832 *p++ = 0;
861 833 // bt mac id
862   -/* *p++ = 0x11;
863   - *p++ = 0x12;
864   - *p++ = 0x13;
865   - *p++ = 0x14;
866   - *p++ = 0x15;
867   - *p++ = 0x16;*/
868 834 memcpy(p,baaddr,sizeof(baaddr));
869 835 p+=6;
870   -
871 836 //a-a5
872   -/*
873   - buf = buf+0xfc00c;
874   - buf[0] = a;
875   - buf[1] = a1;
876   - buf[2] = a2;
877   - buf[3] = a3;
878   - buf[4] = a4;
879   - buf[5] = a5;
880   - buf = buf-0xfc00c;
881   - */
882   -
883 837 if (ret == FILE_CHCK_SUCCESSFUL)
884 838 {
885 839 int checksum = 0;
886   - p1 = (U32*)(fData + BAUDRATE_DET_DATA_LEN + sizeof(BOOT_HEADER));
  840 + p1 = (U32*)(TTYInfo.buff_Binfile + BAUDRATE_DET_DATA_LEN + sizeof(BOOT_HEADER));
887 841 for(i=0;i<(p_header->rx_total_bytes-4)/4;i++)
888   - {
889 842 checksum += *p1++;
890   - }
891   -
892 843 *p1 = checksum;
893 844 p_header->rx_checksum = checksum;
894 845 }
... ... @@ -897,29 +848,21 @@ int fileCheck(char *fData,char *dataLen)
897 848
898 849 DWORD WINAPI TransferThreadProc(LPVOID lpV)
899 850 {
900   - DWORD dwPacketSize, dwMaxPackets, dwFileSize;
901 851 DWORD dwStartTime;
902 852 HWND hWndProgress;
903   - HANDLE hFileHandle;
  853 + //HANDLE hFileHandle;
904 854 HANDLE hDataHeap;
905 855 BOOL fStarted = TRUE;
906 856 BOOL fAborting = FALSE;
907 857 BOOL userAborting = TRUE;
908   - char *lpfileBuf;
909 858 char *pRead;
910   - DWORD dwRead;
911 859 int err;
912   -
913   -
914   - hFileHandle = (HANDLE) lpV;
  860 + DWORD dwRead = TTYInfo.dwRead;
  861 + //hFileHandle = (HANDLE) lpV;
915 862 hWndProgress = GetDlgItem(ghWndStatusDlg, IDC_TRANSFERPROGRESS);
916   -
917   - // set up transfer metrics
918   - if (!GetTransferSizes(hFileHandle, &dwPacketSize, &dwMaxPackets, &dwFileSize))
919   - fAborting = TRUE;
920   - else {
921   - SendMessage(hWndProgress, PBM_SETRANGE, 0, MAKELPARAM(0, dwMaxPackets+1));
922   -// SendMessage(hWndProgress, PBM_SETRANGE, 0, MAKELPARAM(0, 100));
  863 + {
  864 + //SendMessage(hWndProgress, PBM_SETRANGE, 0, MAKELPARAM(0, TTYInfo.dwMaxPackets+1));
  865 + SendMessage(hWndProgress, PBM_SETRANGE, 0, MAKELPARAM(0, 100));
923 866 SendMessage(hWndProgress, PBM_SETSTEP, (WPARAM) 1, 0);
924 867 SendMessage(hWndProgress, PBM_SETPOS, 0, 0);
925 868 }
... ... @@ -928,7 +871,7 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
928 871 if (!fAborting) {
929 872 SYSTEM_INFO sysInfo;
930 873 GetSystemInfo(&sysInfo);
931   -// hDataHeap = HeapCreate(0, sysInfo.dwPageSize * 2, sysInfo.dwPageSize * 10);
  874 + //hDataHeap = HeapCreate(0, sysInfo.dwPageSize * 2, sysInfo.dwPageSize * 10);
932 875 hDataHeap = HeapCreate(0, sysInfo.dwPageSize * 20,0);
933 876 if (hDataHeap == NULL) {
934 877 ErrorReporter("HeapCreate (Data Heap)");
... ... @@ -937,19 +880,11 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
937 880 }
938 881
939 882 /**********************check file*********************************/
940   - lpfileBuf = HeapAlloc(hDataHeap, 0, dwFileSize);
941   - pRead = lpfileBuf;
942   - memset(lpfileBuf,0,dwFileSize);
943   - ReadFile(hFileHandle, lpfileBuf, dwFileSize, &dwRead, NULL);
  883 + //lpfileBuf = HeapAlloc(hDataHeap, 0, TTYInfo.dwFileSize);
  884 + pRead = TTYInfo.buff_Binfile;
944 885
945   - if (dwRead != dwFileSize)
946   - {
947   - ErrorReporter("file err!\r\n");
948   - userAborting =FALSE;
949   - fAborting = TRUE;
950   - }
951 886
952   - err = fileCheck(lpfileBuf,dwFileSize);
  887 + err = fileCheck(TTYInfo.dwFileSize);
953 888
954 889 if (err == WRONG_FILE_FORMAT)
955 890 {
... ... @@ -977,7 +912,7 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
977 912
978 913 // inform writer thread that a file is about to be transferred
979 914 if (!fAborting) {
980   - if (!WriterAddNewNode(WRITE_FILESTART, dwFileSize, 0, NULL, NULL, NULL))
  915 + if (!WriterAddNewNode(WRITE_FILESTART, TTYInfo.dwFileSize, 0, NULL, NULL, NULL))
981 916 fAborting = TRUE;
982 917
983 918 }
... ... @@ -992,7 +927,7 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
992 927 char * lpDataBuf;
993 928
994 929 // transfer file, loop until all blocks of file have been read
995   - lpDataBuf = HeapAlloc(hDataHeap, 0, dwPacketSize);
  930 + lpDataBuf = HeapAlloc(hDataHeap, 0, TTYInfo.dwPacketSize);
996 931 pWrite = HeapAlloc(ghWriterHeap, 0, sizeof(WRITEREQUEST));
997 932
998 933 if ((lpDataBuf != NULL) && (pWrite != NULL)) {
... ... @@ -1001,13 +936,15 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
1001 936
1002 937 // read from file into new buffer
1003 938 //if (ReadFile(hFileHandle, lpDataBuf, dwPacketSize, &dwRead, NULL)) {
1004   - if (dwRead > dwPacketSize){
1005   - memcpy(lpDataBuf,pRead,dwPacketSize);
1006   - WriterAddExistingNode(pWrite, WRITE_FILE, dwPacketSize, 0, lpDataBuf, hDataHeap, hWndProgress);
1007   - dwRead -= dwPacketSize;
1008   - pRead += dwPacketSize;
  939 + if (dwRead > TTYInfo.dwPacketSize)
  940 + {
  941 + memcpy(lpDataBuf,pRead,TTYInfo.dwPacketSize);
  942 + WriterAddExistingNode(pWrite, WRITE_FILE, TTYInfo.dwPacketSize, 0, lpDataBuf, hDataHeap, hWndProgress);
  943 + dwRead -= TTYInfo.dwPacketSize;
  944 + pRead += TTYInfo.dwPacketSize;
1009 945 }
1010   - else{
  946 + else
  947 + {
1011 948 memcpy(lpDataBuf,pRead,dwRead);
1012 949 WriterAddExistingNode(pWrite, WRITE_FILE, dwRead, 0, lpDataBuf, hDataHeap, hWndProgress);
1013 950 // eof
... ... @@ -1052,27 +989,16 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
1052 989 if (WaitForSingleObject(hTransferAbortEvent, 0) == WAIT_OBJECT_0)
1053 990 fAborting = TRUE;
1054 991 }
1055   -
1056   - if (lpfileBuf) {
1057   - BOOL fRes;
1058   -
1059   - EnterCriticalSection(&gcsDataHeap);
1060   - fRes = HeapFree(hDataHeap, 0, lpfileBuf);
1061   - LeaveCriticalSection(&gcsDataHeap);
1062   - if (!fRes)
1063   - ErrorReporter("HeapFree (Data block)");
1064   - }
1065   -
1066 992 OutputDebugString("Xfer: Done sending packets.\n");
1067 993
1068 994 if (fAborting) {
1069 995 // inform writer that transfer is aborting
1070 996
1071 997 OutputDebugString("Xfer: Sending Abort Packet to writer\n");
1072   - WriterAddFirstNodeTimeout(WRITE_ABORT, dwFileSize, 0, NULL, NULL, NULL, 500);
  998 + WriterAddFirstNodeTimeout(WRITE_ABORT, TTYInfo.dwPacketSize, 0, NULL, NULL, NULL, 500);
1073 999 }
1074 1000 else
1075   - WriterAddNewNodeTimeout(WRITE_FILEEND, dwFileSize, 0, NULL, NULL, NULL, 500);
  1001 + WriterAddNewNodeTimeout(WRITE_FILEEND, TTYInfo.dwPacketSize, 0, NULL, NULL, NULL, 500);
1076 1002
1077 1003 {
1078 1004 // wait til writer thread finishes with all blocks
... ... @@ -1097,7 +1023,7 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
1097 1023 fAborting = TRUE;
1098 1024 OutputDebugString("Transfer abort signal rec'd\n");
1099 1025 OutputDebugString("Xfer: Sending Abort Packet to writer\n");
1100   - if (!WriterAddFirstNodeTimeout(WRITE_ABORT, dwFileSize, 0, NULL, NULL, NULL, 500))
  1026 + if (!WriterAddFirstNodeTimeout(WRITE_ABORT, TTYInfo.dwPacketSize, 0, NULL, NULL, NULL, 500))
1101 1027 ErrorReporter("Can't add abort packet\n");
1102 1028 break;
1103 1029 case WAIT_TIMEOUT: break;
... ... @@ -1113,10 +1039,10 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
1113 1039
1114 1040 // report statistics
1115 1041 if (!fAborting)
1116   - ShowTransferStatistics(GetTickCount(), dwStartTime, dwFileSize);
  1042 + ShowTransferStatistics(GetTickCount(), dwStartTime, TTYInfo.dwPacketSize);
1117 1043
1118 1044 // break down metrics
1119   - PostMessage(hWndProgress, PBM_SETPOS, 0, 0);
  1045 + //PostMessage(hWndProgress, PBM_SETPOS, 0, 0);
1120 1046
1121 1047 // break down heaps
1122 1048 if (hDataHeap != NULL) {
... ... @@ -1129,7 +1055,7 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
1129 1055 // clean up after the file transfer.
1130 1056 if ((!fAborting)|| (!userAborting))
1131 1057 {
1132   - PostMessage(ghwndMain, WM_COMMAND, ID_TRANSFER_ABORTSENDING, 0);
  1058 + PostMessage(ghWndToolbarDlg, WM_COMMAND, ID_TRANSFER_ABORTSENDING, 0);
1133 1059 }
1134 1060
1135 1061 // exit thread
... ...
... ... @@ -337,8 +337,8 @@ void WriterFile(PWRITEREQUEST pWrite)
337 337 //
338 338 // update progress indicator (even if aborting)
339 339 //
340   - if (!PostMessage(pWrite->hWndProgress, PBM_STEPIT, 0, 0))
341   - ErrorReporter("PostMessage (file transfer status)");
  340 + //if (!PostMessage(pWrite->hWndProgress, PBM_STEPIT, 0, 0))
  341 + // ErrorReporter("PostMessage (file transfer status)");
342 342
343 343 return;
344 344 }
... ... @@ -383,7 +383,7 @@ HISTORY: Date: Author: Comment:
383 383 11/20/95 AllenD Took out all test code
384 384
385 385 -----------------------------------------------------------------------------*/
386   -void WriterFileStart(DWORD dwFileSize)
  386 +void WriterFileStart()
387 387 {
388 388 return;
389 389 }
... ...
Please register or login to post a comment