Commit 79df712cc29e31754be602b46fc3dcde516a24c1

Authored by xiemeng
1 parent b10c72d2

其他更新

@@ -26,7 +26,7 @@ @@ -26,7 +26,7 @@
26 /* 26 /*
27 Prototypes for functions called only in this file 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 UINT InitAboutDlg( HWND ); 30 UINT InitAboutDlg( HWND );
31 31
32 /*----------------------------------------------------------------------------- 32 /*-----------------------------------------------------------------------------
@@ -39,11 +39,11 @@ PARAMETERS: @@ -39,11 +39,11 @@ PARAMETERS:
39 PURPOSE: Creates the modal About dialog 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,47 +102,47 @@ HISTORY: Date: Author: Comment:
102 10/27/95 AllenD Wrote it 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,45 +85,40 @@ HISTORY: Date: Author: Comment:
85 -----------------------------------------------------------------------------*/ 85 -----------------------------------------------------------------------------*/
86 void ErrorReporter(char * szMessage) 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,11 +51,11 @@ DWORD WaitForThreads( DWORD );
51 */ 51 */
52 COMMTIMEOUTS gTimeoutsDefault = { 0x01, 0, 0, 0, 0 }; 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 void oem_init(void) 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,8 +74,9 @@ HISTORY: Date: Author: Comment:
74 void GlobalInitialize() 74 void GlobalInitialize()
75 { 75 {
76 int cyMenuHeight, cyCaptionHeight, cyFrameHeight; 76 int cyMenuHeight, cyCaptionHeight, cyFrameHeight;
  77 + memset(TTYInfo.szFileName,0,sizeof(TTYInfo.szFileName));
77 78
78 - oem_init(); 79 + //oem_init();
79 // 80 //
80 // critical sections in status reporting & node management 81 // critical sections in status reporting & node management
81 // 82 //
@@ -197,7 +198,9 @@ void InitNewFont(LOGFONT LogFont, COLORREF rgbColor) @@ -197,7 +198,9 @@ void InitNewFont(LOGFONT LogFont, COLORREF rgbColor)
197 LFTTYFONT(TTYInfo) = LogFont; 198 LFTTYFONT(TTYInfo) = LogFont;
198 HTTYFONT(TTYInfo) = CreateFontIndirect(&(LFTTYFONT(TTYInfo))); 199 HTTYFONT(TTYInfo) = CreateFontIndirect(&(LFTTYFONT(TTYInfo)));
199 FGCOLOR(TTYInfo) = rgbColor; 200 FGCOLOR(TTYInfo) = rgbColor;
200 - 201 +#if 1//def __TOPWELL_EDIT__
  202 + TTYInfo.rgbBGColor = RGB(255,255,255);
  203 +#endif
201 hDC = GetDC( ghwndMain ) ; 204 hDC = GetDC( ghwndMain ) ;
202 SelectObject( hDC, HTTYFONT( TTYInfo ) ) ; 205 SelectObject( hDC, HTTYFONT( TTYInfo ) ) ;
203 GetTextMetrics( hDC, &tm ) ; 206 GetTextMetrics( hDC, &tm ) ;
@@ -238,7 +241,7 @@ BOOL InitTTYInfo() @@ -238,7 +241,7 @@ BOOL InitTTYInfo()
238 LOCALECHO( TTYInfo ) = FALSE ; 241 LOCALECHO( TTYInfo ) = FALSE ;
239 CURSORSTATE( TTYInfo ) = CS_HIDE ; 242 CURSORSTATE( TTYInfo ) = CS_HIDE ;
240 PORT( TTYInfo ) = 1 ; 243 PORT( TTYInfo ) = 1 ;
241 - BAUDRATE( TTYInfo ) = BaudTable[2] ; 244 + BAUDRATE( TTYInfo ) = 921600;
242 BYTESIZE( TTYInfo ) = 8 ; 245 BYTESIZE( TTYInfo ) = 8 ;
243 PARITY( TTYInfo ) = NOPARITY ; 246 PARITY( TTYInfo ) = NOPARITY ;
244 STOPBITS( TTYInfo ) = ONESTOPBIT ; 247 STOPBITS( TTYInfo ) = ONESTOPBIT ;
@@ -251,22 +254,13 @@ BOOL InitTTYInfo() @@ -251,22 +254,13 @@ BOOL InitTTYInfo()
251 COLUMN( TTYInfo ) = 0 ; 254 COLUMN( TTYInfo ) = 0 ;
252 ROW( TTYInfo ) = MAXROWS - 1 ; 255 ROW( TTYInfo ) = MAXROWS - 1 ;
253 DISPLAYERRORS( TTYInfo ) = TRUE ; 256 DISPLAYERRORS( TTYInfo ) = TRUE ;
254 -  
255 - //  
256 // timeouts 257 // timeouts
257 - //  
258 TIMEOUTSNEW( TTYInfo ) = gTimeoutsDefault; 258 TIMEOUTSNEW( TTYInfo ) = gTimeoutsDefault;
259 -  
260 - //  
261 // read state and status events 259 // read state and status events
262 - //  
263 gdwReceiveState = RECEIVE_TTY; 260 gdwReceiveState = RECEIVE_TTY;
264 EVENTFLAGS( TTYInfo ) = EVENTFLAGS_DEFAULT; 261 EVENTFLAGS( TTYInfo ) = EVENTFLAGS_DEFAULT;
265 FLAGCHAR( TTYInfo ) = FLAGCHAR_DEFAULT; 262 FLAGCHAR( TTYInfo ) = FLAGCHAR_DEFAULT;
266 -  
267 - //  
268 // Flow Control Settings 263 // Flow Control Settings
269 - //  
270 DTRCONTROL( TTYInfo ) = DTR_CONTROL_ENABLE; 264 DTRCONTROL( TTYInfo ) = DTR_CONTROL_ENABLE;
271 RTSCONTROL( TTYInfo ) = RTS_CONTROL_ENABLE; 265 RTSCONTROL( TTYInfo ) = RTS_CONTROL_ENABLE;
272 XONCHAR( TTYInfo ) = ASCII_XON; 266 XONCHAR( TTYInfo ) = ASCII_XON;
@@ -285,10 +279,7 @@ BOOL InitTTYInfo() @@ -285,10 +279,7 @@ BOOL InitTTYInfo()
285 NOEVENTS(TTYInfo) = FALSE; 279 NOEVENTS(TTYInfo) = FALSE;
286 NOSTATUS(TTYInfo) = FALSE; 280 NOSTATUS(TTYInfo) = FALSE;
287 SHOWTIMEOUTS(TTYInfo) = FALSE; 281 SHOWTIMEOUTS(TTYInfo) = FALSE;
288 -  
289 - //  
290 // setup default font information 282 // setup default font information
291 - //  
292 LFTTYFONT( TTYInfo ).lfHeight = 20 ; 283 LFTTYFONT( TTYInfo ).lfHeight = 20 ;
293 LFTTYFONT( TTYInfo ).lfWidth = 0 ; 284 LFTTYFONT( TTYInfo ).lfWidth = 0 ;
294 LFTTYFONT( TTYInfo ).lfEscapement = 0 ; 285 LFTTYFONT( TTYInfo ).lfEscapement = 0 ;
@@ -302,6 +293,7 @@ BOOL InitTTYInfo() @@ -302,6 +293,7 @@ BOOL InitTTYInfo()
302 LFTTYFONT( TTYInfo ).lfClipPrecision = CLIP_DEFAULT_PRECIS ; 293 LFTTYFONT( TTYInfo ).lfClipPrecision = CLIP_DEFAULT_PRECIS ;
303 LFTTYFONT( TTYInfo ).lfQuality = DEFAULT_QUALITY ; 294 LFTTYFONT( TTYInfo ).lfQuality = DEFAULT_QUALITY ;
304 LFTTYFONT( TTYInfo ).lfPitchAndFamily = FIXED_PITCH | FF_MODERN ; 295 LFTTYFONT( TTYInfo ).lfPitchAndFamily = FIXED_PITCH | FF_MODERN ;
  296 + TTYInfo.DownloadReday = FALSE;
305 strcpy( LFTTYFONT( TTYInfo ).lfFaceName, "FixedSys" ) ; 297 strcpy( LFTTYFONT( TTYInfo ).lfFaceName, "FixedSys" ) ;
306 // strcpy( LFTTYFONT( TTYInfo ).lfFaceName, "Courier New" ) ; 298 // strcpy( LFTTYFONT( TTYInfo ).lfFaceName, "Courier New" ) ;
307 299
@@ -347,7 +339,7 @@ void StartThreads(void) @@ -347,7 +339,7 @@ void StartThreads(void)
347 CreateThread( NULL, 339 CreateThread( NULL,
348 0, 340 0,
349 (LPTHREAD_START_ROUTINE) ReaderAndStatusProc, 341 (LPTHREAD_START_ROUTINE) ReaderAndStatusProc,
350 - (LPVOID) ghWndTTY, 342 + (LPVOID) ghWndMessage,
351 0, 343 0,
352 &dwReadStatId); 344 &dwReadStatId);
353 345
@@ -392,15 +384,10 @@ HANDLE SetupCommPort() @@ -392,15 +384,10 @@ HANDLE SetupCommPort()
392 // 384 //
393 // open communication port handle 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 ErrorReporter("CreateFile"); 391 ErrorReporter("CreateFile");
405 return NULL; 392 return NULL;
406 } 393 }
@@ -436,6 +423,7 @@ HANDLE SetupCommPort() @@ -436,6 +423,7 @@ HANDLE SetupCommPort()
436 // set overall connect flag 423 // set overall connect flag
437 // 424 //
438 CONNECTED( TTYInfo ) = TRUE ; 425 CONNECTED( TTYInfo ) = TRUE ;
  426 + OutputAclorBuffer("open COM sucess!\r\n",RGB(255, 255, 255));
439 427
440 return COMDEV(TTYInfo); 428 return COMDEV(TTYInfo);
441 } 429 }
@@ -595,3 +583,281 @@ BOOL DisconnectOK() @@ -595,3 +583,281 @@ BOOL DisconnectOK()
595 583
596 return ((MessageBox(ghwndMain, "OK to Disconnect?", gszPort, MB_YESNO)) == IDYES); 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,7 +46,7 @@ BOOL ScrollTTYHorz( HWND, WORD, WORD );
46 BOOL VersionCheck(); 46 BOOL VersionCheck();
47 BOOL PaintTTY( HWND ); 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,6 +160,7 @@ BOOL InitializeApp(HINSTANCE hInst, int nShowCmd)
160 GlobalCleanup(); 160 GlobalCleanup();
161 return FALSE; 161 return FALSE;
162 } 162 }
  163 + QuerySerialPortStatusEx(TTYInfo.unOpenedPortAry,2,255);
163 164
164 // 165 //
165 // setup program's tty child window class 166 // setup program's tty child window class
@@ -244,7 +245,7 @@ int WINAPI MTTTYWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) @@ -244,7 +245,7 @@ int WINAPI MTTTYWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
244 DestroyTTYInfo(); 245 DestroyTTYInfo();
245 DestroyWindow(ghWndToolbarDlg); 246 DestroyWindow(ghWndToolbarDlg);
246 DestroyWindow(ghWndStatusDlg); 247 DestroyWindow(ghWndStatusDlg);
247 - DestroyWindow(ghWndTTY); 248 + DestroyWindow(ghWndMessage);
248 249
249 GlobalCleanup(); 250 GlobalCleanup();
250 PostQuitMessage(0); 251 PostQuitMessage(0);
@@ -271,35 +272,8 @@ int WINAPI MTTTYWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) @@ -271,35 +272,8 @@ int WINAPI MTTTYWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
271 272
272 case WM_SIZE: 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 break; 279 break;
@@ -309,8 +283,8 @@ int WINAPI MTTTYWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) @@ -309,8 +283,8 @@ int WINAPI MTTTYWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
309 break; 283 break;
310 284
311 case WM_CHAR: 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 break; 288 break;
315 289
316 case WM_CLOSE: 290 case WM_CLOSE:
@@ -357,119 +331,71 @@ void CmdDispatch(int iMenuChoice, HWND hwnd, LPARAM lParam) @@ -357,119 +331,71 @@ void CmdDispatch(int iMenuChoice, HWND hwnd, LPARAM lParam)
357 331
358 switch (iMenuChoice) 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 case ID_TRANSFER_RECEIVEFILETEXT: 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 break; 341 break;
405 342
406 case ID_TRANSFER_ABORTSENDING: 343 case ID_TRANSFER_ABORTSENDING:
407 // was abort sent from the abort button? 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 break; 360 break;
423 361
424 case ID_TRANSFER_SENDREPEATEDLY: 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 case ID_TRANSFER_ABORTREPEATEDSENDING: 379 case ID_TRANSFER_ABORTREPEATEDSENDING:
448 TransferRepeatDestroy(); 380 TransferRepeatDestroy();
449 break; 381 break;
450 382
451 case ID_TTY_CLEAR: 383 case ID_TTY_CLEAR:
452 - ClearTTYContents();  
453 - InvalidateRect(ghWndTTY, NULL, TRUE); 384 + //ClearTTYContents();
  385 + //InvalidateRect(ghWndMessage, NULL, TRUE);
454 break; 386 break;
455 387
456 // The following correspond to menu choices and buttons in the settings dlog 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 case ID_FILE_DISCONNECT: 396 case ID_FILE_DISCONNECT:
471 - if (BreakDownCommPort())  
472 - ChangeConnection(hwnd, CONNECTED(TTYInfo)); 397 + //if (BreakDownCommPort())
  398 + // ChangeConnection(hwnd, CONNECTED(TTYInfo));
473 break; 399 break;
474 400
475 case ID_FILE_EXIT: 401 case ID_FILE_EXIT:
@@ -497,12 +423,12 @@ HISTORY: Date: Author: Comment: @@ -497,12 +423,12 @@ HISTORY: Date: Author: Comment:
497 /*-----------------------------------------------------------------------------*/ 423 /*-----------------------------------------------------------------------------*/
498 void OpenTTYChildWindow(HWND hWnd) 424 void OpenTTYChildWindow(HWND hWnd)
499 { 425 {
500 - ghWndTTY = CreateWindow( "MTTTYChildClass", "TTY Window", 426 + ghWndMessage = CreateWindow( "MTTTYChildClass", "TTY Window",
501 WS_CHILD | WS_VISIBLE | WS_VSCROLL, 427 WS_CHILD | WS_VISIBLE | WS_VSCROLL,
502 0,0, 428 0,0,
503 0,0, 429 0,0,
504 hWnd, (HMENU)ID_TTYWINDOW, ghInst, NULL); 430 hWnd, (HMENU)ID_TTYWINDOW, ghInst, NULL);
505 - if (ghWndTTY == NULL) 431 + if (ghWndMessage == NULL)
506 ErrorReporter("Can't Create TTY Child Window"); 432 ErrorReporter("Can't Create TTY Child Window");
507 433
508 return; 434 return;
@@ -579,9 +505,7 @@ BOOL NEAR ScrollTTYVert( HWND hWnd, WORD wScrollCmd, WORD wScrollPos ) @@ -579,9 +505,7 @@ BOOL NEAR ScrollTTYVert( HWND hWnd, WORD wScrollCmd, WORD wScrollPos )
579 if (nScrollAmt != 0) 505 if (nScrollAmt != 0)
580 { 506 {
581 YOFFSET( TTYInfo ) = YOFFSET( TTYInfo ) + nScrollAmt ; 507 YOFFSET( TTYInfo ) = YOFFSET( TTYInfo ) + nScrollAmt ;
582 -  
583 SetScrollPos( hWnd, SB_VERT, YOFFSET( TTYInfo ), TRUE ) ; 508 SetScrollPos( hWnd, SB_VERT, YOFFSET( TTYInfo ), TRUE ) ;
584 -  
585 ScrollWindowEx( hWnd, 0, -nScrollAmt, NULL, NULL, NULL, NULL, SW_INVALIDATE | SW_ERASE) ; 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,20 +620,16 @@ BOOL NEAR PaintTTY( HWND hWnd )
696 hDC = BeginPaint( hWnd, &ps ) ; 620 hDC = BeginPaint( hWnd, &ps ) ;
697 hOldFont = SelectObject( hDC, HTTYFONT( TTYInfo ) ) ; 621 hOldFont = SelectObject( hDC, HTTYFONT( TTYInfo ) ) ;
698 SetTextColor( hDC, FGCOLOR( TTYInfo ) ) ; 622 SetTextColor( hDC, FGCOLOR( TTYInfo ) ) ;
  623 +#if 1//def __TOPWELL_EDIT__
  624 + SetBkColor( hDC, TTYInfo.rgbBGColor ) ;
  625 +#else
699 SetBkColor( hDC, GetSysColor( COLOR_WINDOW ) ) ; 626 SetBkColor( hDC, GetSysColor( COLOR_WINDOW ) ) ;
  627 +#endif
700 rect = ps.rcPaint ; 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 nCount = nEndCol - nCol + 1 ; 633 nCount = nEndCol - nCol + 1 ;
714 for (; nRow <= nEndRow; nRow++) 634 for (; nRow <= nEndRow; nRow++)
715 { 635 {
@@ -720,9 +640,7 @@ BOOL NEAR PaintTTY( HWND hWnd ) @@ -720,9 +640,7 @@ BOOL NEAR PaintTTY( HWND hWnd )
720 rect.left = nHorzPos ; 640 rect.left = nHorzPos ;
721 rect.right = nHorzPos + XCHAR( TTYInfo ) * nCount ; 641 rect.right = nHorzPos + XCHAR( TTYInfo ) * nCount ;
722 SetBkMode( hDC, OPAQUE ) ; 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 SelectObject( hDC, hOldFont ) ; 645 SelectObject( hDC, hOldFont ) ;
728 EndPaint( hWnd, &ps ) ; 646 EndPaint( hWnd, &ps ) ;
@@ -920,17 +838,17 @@ int WINAPI TTYChildProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam) @@ -920,17 +838,17 @@ int WINAPI TTYChildProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam)
920 return FALSE; 838 return FALSE;
921 839
922 if (LOCALECHO(TTYInfo)) 840 if (LOCALECHO(TTYInfo))
923 - OutputABufferToWindow(ghWndTTY, (CHAR *) &wParam, 1); 841 + OutputABufferToWindow(ghWndMessage, (CHAR *) &wParam, 1);
924 } 842 }
925 } 843 }
926 break; 844 break;
927 845
928 case WM_SETFOCUS: 846 case WM_SETFOCUS:
929 - SetTTYFocus( ghWndTTY ) ; 847 + SetTTYFocus( ghWndMessage ) ;
930 break ; 848 break ;
931 849
932 case WM_KILLFOCUS: 850 case WM_KILLFOCUS:
933 - KillTTYFocus( ghWndTTY ) ; 851 + KillTTYFocus( ghWndMessage ) ;
934 break ; 852 break ;
935 853
936 case WM_MOUSEACTIVATE: 854 case WM_MOUSEACTIVATE:
@@ -947,3 +865,41 @@ int WINAPI TTYChildProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam) @@ -947,3 +865,41 @@ int WINAPI TTYChildProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam)
947 } 865 }
948 return 0L; 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,23 +170,45 @@ HISTORY: Date: Author: Comment:
170 10/27/95 AllenD Wrote it 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 OutputDebugString("NULL Buffer in OutputABuffer\n\r"); 179 OutputDebugString("NULL Buffer in OutputABuffer\n\r");
177 return; 180 return;
178 } 181 }
179 -  
180 switch(gdwReceiveState) 182 switch(gdwReceiveState)
181 { 183 {
182 case RECEIVE_TTY: 184 case RECEIVE_TTY:
183 - OutputABufferToWindow(hTTY, lpBuf, dwBufLen); 185 + OutputABufferToWindow(ghWndMessage, lpBuf, dwBufLen);
184 break; 186 break;
185 -  
186 case RECEIVE_CAPTURED: 187 case RECEIVE_CAPTURED:
187 OutputABufferToFile(ghFileCapture, lpBuf, dwBufLen); 188 OutputABufferToFile(ghFileCapture, lpBuf, dwBufLen);
188 break; 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 default: 212 default:
191 OutputDebugString("Unknown receive state!\n\r"); 213 OutputDebugString("Unknown receive state!\n\r");
192 } 214 }
@@ -19,11 +19,88 @@ @@ -19,11 +19,88 @@
19 -----------------------------------------------------------------------------*/ 19 -----------------------------------------------------------------------------*/
20 20
21 #include <windows.h> 21 #include <windows.h>
  22 +#include <commctrl.h>
22 #include "mttty.h" 23 #include "mttty.h"
23 24
24 #define AMOUNT_TO_READ 512 25 #define AMOUNT_TO_READ 512
25 #define NUM_READSTAT_HANDLES 4 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 FUNCTION: ReaderAndStatusProc(LPVOID) 106 FUNCTION: ReaderAndStatusProc(LPVOID)
@@ -52,12 +129,14 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) @@ -52,12 +129,14 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV)
52 DWORD dwStoredFlags = 0xFFFFFFFF; // local copy of event flags 129 DWORD dwStoredFlags = 0xFFFFFFFF; // local copy of event flags
53 DWORD dwCommEvent; // result from WaitCommEvent 130 DWORD dwCommEvent; // result from WaitCommEvent
54 DWORD dwOvRes; // result from GetOverlappedResult 131 DWORD dwOvRes; // result from GetOverlappedResult
55 - DWORD dwRead; // bytes actually read 132 + DWORD dwReadFromUart; // bytes actually read
56 DWORD dwRes; // result from WaitForSingleObject 133 DWORD dwRes; // result from WaitForSingleObject
57 BOOL fWaitingOnRead = FALSE; 134 BOOL fWaitingOnRead = FALSE;
58 BOOL fWaitingOnStat = FALSE; 135 BOOL fWaitingOnStat = FALSE;
59 BOOL fThreadDone = FALSE; 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 HWND hTTY; 140 HWND hTTY;
62 141
63 hTTY = (HANDLE) lpV; 142 hTTY = (HANDLE) lpV;
@@ -92,49 +171,45 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) @@ -92,49 +171,45 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV)
92 CheckModemStatus(TRUE); 171 CheckModemStatus(TRUE);
93 CheckComStat(TRUE); 172 CheckComStat(TRUE);
94 173
95 - while ( !fThreadDone ) {  
96 -  
97 - // 174 + while ( !fThreadDone )
  175 + {
98 // If no reading is allowed, then set flag to 176 // If no reading is allowed, then set flag to
99 // make it look like a read is already outstanding. 177 // make it look like a read is already outstanding.
100 - //  
101 if (NOREADING( TTYInfo )) 178 if (NOREADING( TTYInfo ))
102 fWaitingOnRead = TRUE; 179 fWaitingOnRead = TRUE;
103 -  
104 - //  
105 // if no read is outstanding, then issue another one 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 if (GetLastError() != ERROR_IO_PENDING) // read not delayed? 189 if (GetLastError() != ERROR_IO_PENDING) // read not delayed?
110 ErrorInComm("ReadFile in ReaderAndStatusProc"); 190 ErrorInComm("ReadFile in ReaderAndStatusProc");
111 -  
112 fWaitingOnRead = TRUE; 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 UpdateStatus("Read timed out immediately.\r\n"); 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 // If status flags have changed, then reset comm mask. 202 // If status flags have changed, then reset comm mask.
125 // This will cause a pending WaitCommEvent to complete 203 // This will cause a pending WaitCommEvent to complete
126 // and the resultant event flag will be NULL. 204 // and the resultant event flag will be NULL.
127 - //  
128 - if (dwStoredFlags != EVENTFLAGS(TTYInfo)) { 205 + if (dwStoredFlags != EVENTFLAGS(TTYInfo))
  206 + {
129 dwStoredFlags = EVENTFLAGS(TTYInfo); 207 dwStoredFlags = EVENTFLAGS(TTYInfo);
130 if (!SetCommMask(COMDEV(TTYInfo), dwStoredFlags)) 208 if (!SetCommMask(COMDEV(TTYInfo), dwStoredFlags))
131 ErrorReporter("SetCommMask"); 209 ErrorReporter("SetCommMask");
132 } 210 }
133 -  
134 - //  
135 // If event checks are not allowed, then make it look 211 // If event checks are not allowed, then make it look
136 // like an event check operation is outstanding 212 // like an event check operation is outstanding
137 - //  
138 if (NOEVENTS(TTYInfo)) 213 if (NOEVENTS(TTYInfo))
139 fWaitingOnStat = TRUE; 214 fWaitingOnStat = TRUE;
140 // 215 //
@@ -167,18 +242,24 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) @@ -167,18 +242,24 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV)
167 // read completed 242 // read completed
168 // 243 //
169 case WAIT_OBJECT_0: 244 case WAIT_OBJECT_0:
170 - if (!GetOverlappedResult(COMDEV(TTYInfo), &osReader, &dwRead, FALSE)) { 245 + if (!GetOverlappedResult(COMDEV(TTYInfo), &osReader, &dwReadFromUart, FALSE))
  246 + {
171 if (GetLastError() == ERROR_OPERATION_ABORTED) 247 if (GetLastError() == ERROR_OPERATION_ABORTED)
172 UpdateStatus("Read aborted\r\n"); 248 UpdateStatus("Read aborted\r\n");
173 else 249 else
174 ErrorInComm("GetOverlappedResult (in Reader)"); 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 UpdateStatus("Read timed out overlapped.\r\n"); 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 if (dwRead) 260 if (dwRead)
181 OutputABuffer(hTTY, lpBuf, dwRead); 261 OutputABuffer(hTTY, lpBuf, dwRead);
  262 + #endif
182 } 263 }
183 264
184 fWaitingOnRead = FALSE; 265 fWaitingOnRead = FALSE;
@@ -188,7 +269,8 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) @@ -188,7 +269,8 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV)
188 // status completed 269 // status completed
189 // 270 //
190 case WAIT_OBJECT_0 + 1: 271 case WAIT_OBJECT_0 + 1:
191 - if (!GetOverlappedResult(COMDEV(TTYInfo), &osStatus, &dwOvRes, FALSE)) { 272 + if (!GetOverlappedResult(COMDEV(TTYInfo), &osStatus, &dwOvRes, FALSE))
  273 + {
192 if (GetLastError() == ERROR_OPERATION_ABORTED) 274 if (GetLastError() == ERROR_OPERATION_ABORTED)
193 UpdateStatus("WaitCommEvent aborted\r\n"); 275 UpdateStatus("WaitCommEvent aborted\r\n");
194 else 276 else
@@ -196,7 +278,6 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) @@ -196,7 +278,6 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV)
196 } 278 }
197 else // status check completed successfully 279 else // status check completed successfully
198 ReportStatusEvent(dwCommEvent); 280 ReportStatusEvent(dwCommEvent);
199 -  
200 fWaitingOnStat = FALSE; 281 fWaitingOnStat = FALSE;
201 break; 282 break;
202 283
@@ -224,7 +305,8 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV) @@ -224,7 +305,8 @@ DWORD WINAPI ReaderAndStatusProc(LPVOID lpV)
224 // if status checks are not allowed, then don't issue the 305 // if status checks are not allowed, then don't issue the
225 // modem status check nor the com stat check 306 // modem status check nor the com stat check
226 // 307 //
227 - if (!NOSTATUS(TTYInfo)) { 308 + if (!NOSTATUS(TTYInfo))
  309 + {
228 CheckModemStatus(FALSE); // take this opportunity to do 310 CheckModemStatus(FALSE); // take this opportunity to do
229 CheckComStat(FALSE); // a modem status check and 311 CheckComStat(FALSE); // a modem status check and
230 // a comm status check 312 // a comm status check
@@ -55,17 +55,17 @@ void FillComboBox( HWND, char ** szString, DWORD *, WORD, DWORD ); @@ -55,17 +55,17 @@ void FillComboBox( HWND, char ** szString, DWORD *, WORD, DWORD );
55 BOOL SettingsDlgInit( HWND ); 55 BOOL SettingsDlgInit( HWND );
56 DWORD GetdwTTYItem( HWND, int, char **, DWORD *, int ); 56 DWORD GetdwTTYItem( HWND, int, char **, DWORD *, int );
57 BYTE GetbTTYItem( HWND, int, char **, DWORD *, int); 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 BOOL CALLBACK ToolbarProc( HWND, UINT, WPARAM, LPARAM ); 59 BOOL CALLBACK ToolbarProc( HWND, UINT, WPARAM, LPARAM );
60 void InitHexControl(HWND, WORD, WORD, char); 60 void InitHexControl(HWND, WORD, WORD, char);
61 char GetHexControl(HWND, WORD, WORD); 61 char GetHexControl(HWND, WORD, WORD);
62 void SaveCommEventsDlg( HWND ); 62 void SaveCommEventsDlg( HWND );
63 void InitCommEventsDlg( HWND, DWORD ); 63 void InitCommEventsDlg( HWND, DWORD );
64 -BOOL CALLBACK FlowControlProc( HWND, UINT, WPARAM, LPARAM ); 64 +//BOOL CALLBACK FlowControlProc( HWND, UINT, WPARAM, LPARAM );
65 void InitFlowControlDlg( HWND ); 65 void InitFlowControlDlg( HWND );
66 void SaveFlowControlDlg( HWND ); 66 void SaveFlowControlDlg( HWND );
67 void FlowDefault(HWND hdlg, WORD wId); 67 void FlowDefault(HWND hdlg, WORD wId);
68 -BOOL CALLBACK TimeoutsProc( HWND, UINT, WPARAM, LPARAM ); 68 +//BOOL CALLBACK TimeoutsProc( HWND, UINT, WPARAM, LPARAM );
69 void InitTimeoutsDlg( HWND, COMMTIMEOUTS ); 69 void InitTimeoutsDlg( HWND, COMMTIMEOUTS );
70 void SaveTimeoutsDlg( HWND ); 70 void SaveTimeoutsDlg( HWND );
71 BOOL CALLBACK GetADWORDProc( HWND, UINT, WPARAM, LPARAM ); 71 BOOL CALLBACK GetADWORDProc( HWND, UINT, WPARAM, LPARAM );
@@ -176,76 +176,52 @@ void ChangeConnection( HWND hwnd, BOOL fConnected ) @@ -176,76 +176,52 @@ void ChangeConnection( HWND hwnd, BOOL fConnected )
176 Set focus to the child tty window 176 Set focus to the child tty window
177 */ 177 */
178 hMenu = GetMenu( hwnd ) ; 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 EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_PORTCOMBO), FALSE); 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 else { 196 else {
210 // 197 //
211 // Not connected, do opposite of above. 198 // Not connected, do opposite of above.
212 // 199 //
213 hMenu = GetMenu( hwnd ) ; 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 EnableWindow( GetDlgItem(ghWndToolbarDlg, IDC_PORTCOMBO), TRUE); 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 SetFocus(ghwndMain); 226 SetFocus(ghwndMain);
251 } 227 }
@@ -286,34 +262,14 @@ void UpdateTTYInfo() @@ -286,34 +262,14 @@ void UpdateTTYInfo()
286 /*MessageBox(NULL, gszPort, "TEST---", MB_OK);*/ 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 if (CONNECTED(TTYInfo)) // if connected, then update port state 274 if (CONNECTED(TTYInfo)) // if connected, then update port state
319 UpdateConnection(); 275 UpdateConnection();
@@ -559,6 +515,7 @@ BOOL SettingsDlgInit( HWND hDlg ) @@ -559,6 +515,7 @@ BOOL SettingsDlgInit( HWND hDlg )
559 // fill port combo box and make initial selection 515 // fill port combo box and make initial selection
560 // 516 //
561 for (wCount = 0; wCount < wMaxCOM; wCount++) { 517 for (wCount = 0; wCount < wMaxCOM; wCount++) {
  518 +#if 0//def __OPTEK_EDIT__
562 //wsprintf( szBuffer, "%s%d", (LPSTR) szTemp, wCount + 1 ) ; 519 //wsprintf( szBuffer, "%s%d", (LPSTR) szTemp, wCount + 1 ) ;
563 if (cmdT[wCount]) 520 if (cmdT[wCount])
564 { 521 {
@@ -566,6 +523,16 @@ BOOL SettingsDlgInit( HWND hDlg ) @@ -566,6 +523,16 @@ BOOL SettingsDlgInit( HWND hDlg )
566 SendDlgItemMessage( hDlg, IDC_PORTCOMBO, CB_ADDSTRING, 0, 523 SendDlgItemMessage( hDlg, IDC_PORTCOMBO, CB_ADDSTRING, 0,
567 (LPARAM) (LPSTR) szBuffer ) ; 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 SendDlgItemMessage( hDlg, IDC_PORTCOMBO, CB_SETCURSEL, 538 SendDlgItemMessage( hDlg, IDC_PORTCOMBO, CB_SETCURSEL,
@@ -576,55 +543,37 @@ BOOL SettingsDlgInit( HWND hDlg ) @@ -576,55 +543,37 @@ BOOL SettingsDlgInit( HWND hDlg )
576 // 543 //
577 // fill baud combo box and make initial selection 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 // fill data bits combo box and make initial selection 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 wsprintf( szBuffer, "%d", wCount ) ; 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 // if wCount is current selection, tell the combo box 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 // fill parity combo box and make initial selection 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 // fill stop bits combo box and make initial selection 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 // set check marks based on TTY data 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 return ( TRUE ) ; 578 return ( TRUE ) ;
630 579
@@ -717,7 +666,7 @@ BYTE GetbTTYItem(HWND hDlg, int idControl, char ** szString, DWORD * pTable, int @@ -717,7 +666,7 @@ BYTE GetbTTYItem(HWND hDlg, int idControl, char ** szString, DWORD * pTable, int
717 return 0; 666 return 0;
718 } 667 }
719 668
720 -extern char szFileName[MAX_PATH]; 669 +//extern char szFileName[MAX_PATH];
721 670
722 int szFileName_check(char* fileName) 671 int szFileName_check(char* fileName)
723 { 672 {
@@ -769,87 +718,111 @@ BOOL CALLBACK ToolbarProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) @@ -769,87 +718,111 @@ BOOL CALLBACK ToolbarProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
769 { 718 {
770 switch(LOWORD(wParam)) 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 break; 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 else 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 break; 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 default: // some other control has been modified 827 default: // some other control has been modified
855 if (CONNECTED(TTYInfo)) 828 if (CONNECTED(TTYInfo))
@@ -1058,46 +1031,46 @@ HISTORY: Date: Author: Comment: @@ -1058,46 +1031,46 @@ HISTORY: Date: Author: Comment:
1058 10/27/95 AllenD Wrote it 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,47 +1313,47 @@ HISTORY: Date: Author: Comment:
1340 10/27/95 AllenD Wrote it 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,37 +1455,37 @@ HISTORY: Date: Author: Comment:
1482 10/27/95 AllenD Wrote it 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 BOOL CALLBACK GetADWORDProc(HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam) 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,34 +127,37 @@ BOOL CALLBACK StatusDlgProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
127 SendMessage(GetDlgItem(hWndDlg, IDC_STATUSEDIT), WM_SETFONT, (WPARAM)ghFontStatus, 0); 127 SendMessage(GetDlgItem(hWndDlg, IDC_STATUSEDIT), WM_SETFONT, (WPARAM)ghFontStatus, 0);
128 InitStatusMessage(); 128 InitStatusMessage();
129 break; 129 break;
  130 + case WM_SIZE:
  131 + MoveWindow(GetDlgItem(ghWndStatusDlg, IDC_TRANSFERPROGRESS), 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
  132 + break;
130 133
131 case WM_COMMAND: 134 case WM_COMMAND:
132 { 135 {
133 switch(LOWORD(wParam)) 136 switch(LOWORD(wParam))
134 { 137 {
135 case IDC_ABORTBTN: 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 fRet = TRUE; 140 fRet = TRUE;
138 break; 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 default: 162 default:
160 break; 163 break;
@@ -375,8 +378,8 @@ void ReportModemStatus(DWORD dwModemStatus) @@ -375,8 +378,8 @@ void ReportModemStatus(DWORD dwModemStatus)
375 fRING = fStat[2] = MS_RING_ON & dwModemStatus; 378 fRING = fStat[2] = MS_RING_ON & dwModemStatus;
376 fRLSD = fStat[3] = MS_RLSD_ON & dwModemStatus; 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 return; 384 return;
382 } 385 }
@@ -441,17 +444,17 @@ HISTORY: Date: Author: Comment: @@ -441,17 +444,17 @@ HISTORY: Date: Author: Comment:
441 -----------------------------------------------------------------------------*/ 444 -----------------------------------------------------------------------------*/
442 void ReportComStat(COMSTAT ComStat) 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 return; 458 return;
456 } 459 }
457 460
@@ -40,7 +40,6 @@ @@ -40,7 +40,6 @@
40 // 40 //
41 // Globals used in this file only 41 // Globals used in this file only
42 // 42 //
43 -HANDLE hFile;  
44 HANDLE hTransferAbortEvent; 43 HANDLE hTransferAbortEvent;
45 HANDLE hTransferThread; 44 HANDLE hTransferThread;
46 UINT uTimerId; 45 UINT uTimerId;
@@ -84,28 +83,24 @@ void TransferRepeatCreate(LPCTSTR lpszFileName, DWORD dwFrequency) @@ -84,28 +83,24 @@ void TransferRepeatCreate(LPCTSTR lpszFileName, DWORD dwFrequency)
84 { 83 {
85 HMENU hMenu; 84 HMENU hMenu;
86 UINT MenuFlags ; 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 // open the file 92 // open the file
94 // 93 //
95 - hFile = OpenTheFile(lpszFileName);  
96 - if (hFile == INVALID_HANDLE_VALUE)  
97 - return;  
98 -  
99 // 94 //
100 // modify transfer menu 95 // modify transfer menu
101 // 96 //
102 hMenu = GetMenu(ghwndMain); 97 hMenu = GetMenu(ghwndMain);
103 MenuFlags = MF_DISABLED | MF_GRAYED; 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 // enable abort button and progress bar 106 // enable abort button and progress bar
@@ -113,13 +108,9 @@ void TransferRepeatCreate(LPCTSTR lpszFileName, DWORD dwFrequency) @@ -113,13 +108,9 @@ void TransferRepeatCreate(LPCTSTR lpszFileName, DWORD dwFrequency)
113 SetWindowText(GetDlgItem(ghWndStatusDlg, IDC_ABORTBTN), "Abort Tx"); 108 SetWindowText(GetDlgItem(ghWndStatusDlg, IDC_ABORTBTN), "Abort Tx");
114 ShowWindow(GetDlgItem(ghWndStatusDlg, IDC_ABORTBTN), SW_SHOW); 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 // Allocate a buffer 112 // Allocate a buffer
122 - lpBuf = HeapAlloc(ghWriterHeap, 0, dwFileSize); 113 + lpBuf = HeapAlloc(ghWriterHeap, 0, TTYInfo.dwFileSize);
123 if (lpBuf == NULL) { 114 if (lpBuf == NULL) {
124 ErrorReporter("HeapAlloc (data block from writer heap).\r\nFile is too large"); 115 ErrorReporter("HeapAlloc (data block from writer heap).\r\nFile is too large");
125 TransferRepeatDestroy(); 116 TransferRepeatDestroy();
@@ -127,15 +118,15 @@ void TransferRepeatCreate(LPCTSTR lpszFileName, DWORD dwFrequency) @@ -127,15 +118,15 @@ void TransferRepeatCreate(LPCTSTR lpszFileName, DWORD dwFrequency)
127 } 118 }
128 119
129 // fill the buffer 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 if (mmTimer == (MMRESULT) NULL) { 130 if (mmTimer == (MMRESULT) NULL) {
140 ErrorReporter("Could not create mm timer"); 131 ErrorReporter("Could not create mm timer");
141 TransferRepeatDestroy(); 132 TransferRepeatDestroy();
@@ -174,7 +165,7 @@ void TransferRepeatDestroy() @@ -174,7 +165,7 @@ void TransferRepeatDestroy()
174 } 165 }
175 166
176 // close the file 167 // close the file
177 - CloseHandle(hFile); 168 + CloseHandle(TTYInfo.hFile);
178 169
179 // inform writer to abort all pending write requests 170 // inform writer to abort all pending write requests
180 if (!WriterAddFirstNodeTimeout(WRITE_ABORT, 0, 0, NULL, NULL, NULL, 500)) 171 if (!WriterAddFirstNodeTimeout(WRITE_ABORT, 0, 0, NULL, NULL, NULL, 500))
@@ -192,11 +183,11 @@ void TransferRepeatDestroy() @@ -192,11 +183,11 @@ void TransferRepeatDestroy()
192 // 183 //
193 hMenu = GetMenu(ghwndMain); 184 hMenu = GetMenu(ghwndMain);
194 MenuFlags = MF_ENABLED; 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 ShowWindow(GetDlgItem(ghWndStatusDlg, IDC_ABORTBTN), SW_HIDE); 192 ShowWindow(GetDlgItem(ghWndStatusDlg, IDC_ABORTBTN), SW_HIDE);
202 193
@@ -218,12 +209,12 @@ HISTORY: Date: Author: Comment: @@ -218,12 +209,12 @@ HISTORY: Date: Author: Comment:
218 -----------------------------------------------------------------------------*/ 209 -----------------------------------------------------------------------------*/
219 void CALLBACK TransferRepeatDo( UINT uTimerId, 210 void CALLBACK TransferRepeatDo( UINT uTimerId,
220 UINT uRes, 211 UINT uRes,
221 - DWORD dwFileSize, 212 + //DWORD dwFileSize,
222 DWORD dwRes1, 213 DWORD dwRes1,
223 DWORD dwRes2) 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 return; 219 return;
229 } 220 }
@@ -252,20 +243,17 @@ void TransferFileTextStart(LPCTSTR lpstrFileName) @@ -252,20 +243,17 @@ void TransferFileTextStart(LPCTSTR lpstrFileName)
252 // 243 //
253 // open the file 244 // open the file
254 // 245 //
255 - hFile = OpenTheFile(lpstrFileName);  
256 - if (hFile == INVALID_HANDLE_VALUE)  
257 - return;  
258 246
259 // 247 //
260 // modify transfer menu 248 // modify transfer menu
261 // 249 //
262 hMenu = GetMenu(ghwndMain); 250 hMenu = GetMenu(ghwndMain);
263 MenuFlags = MF_DISABLED | MF_GRAYED; 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 // enable abort button and progress bar 258 // enable abort button and progress bar
271 // 259 //
@@ -281,7 +269,7 @@ void TransferFileTextStart(LPCTSTR lpstrFileName) @@ -281,7 +269,7 @@ void TransferFileTextStart(LPCTSTR lpstrFileName)
281 269
282 hTransferThread = CreateThread(NULL, 0, 270 hTransferThread = CreateThread(NULL, 0,
283 TransferThreadProc, 271 TransferThreadProc,
284 - (LPVOID) hFile, 0, &dwThreadId); 272 + (LPVOID) TTYInfo.hFile, 0, &dwThreadId);
285 273
286 if (hTransferThread == NULL) { 274 if (hTransferThread == NULL) {
287 ErrorReporter("CreateThread (Transfer Thread)"); 275 ErrorReporter("CreateThread (Transfer Thread)");
@@ -332,22 +320,22 @@ void TransferFileTextEnd() @@ -332,22 +320,22 @@ void TransferFileTextEnd()
332 // 320 //
333 hMenu = GetMenu(ghwndMain); 321 hMenu = GetMenu(ghwndMain);
334 MenuFlags = MF_ENABLED; 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 // disable abort button and progress bar 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 // close the file 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,16 +372,17 @@ void ReceiveFileText(LPCTSTR lpstrFileName)
384 */ 372 */
385 hMenu = GetMenu(ghwndMain); 373 hMenu = GetMenu(ghwndMain);
386 MenuFlags = MF_DISABLED | MF_GRAYED; 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 // disable transfer menu 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 // enable abort button and progress bar 388 // enable abort button and progress bar
@@ -418,16 +407,16 @@ void ReceiveFileText(LPCTSTR lpstrFileName) @@ -418,16 +407,16 @@ void ReceiveFileText(LPCTSTR lpstrFileName)
418 // 407 //
419 // enable transfer menu 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 // hide abort button and progress bar 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 gfAbortTransfer = FALSE; 421 gfAbortTransfer = FALSE;
433 422
@@ -452,12 +441,8 @@ HISTORY: Date: Author: Comment: @@ -452,12 +441,8 @@ HISTORY: Date: Author: Comment:
452 HANDLE OpenTheFile(LPCTSTR lpFName) 441 HANDLE OpenTheFile(LPCTSTR lpFName)
453 { 442 {
454 HANDLE hTemp; 443 HANDLE hTemp;
455 -  
456 hTemp = CreateFile(lpFName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0,NULL); 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 return hTemp; 446 return hTemp;
462 } 447 }
463 448
@@ -713,27 +698,24 @@ typedef struct { @@ -713,27 +698,24 @@ typedef struct {
713 698
714 const char dft_bdaddr[6] = {0x00,0x00,0x00,0x3F,0x9f,0x94}; 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 int i; 703 int i;
719 /*BOOL flag = FALSE;*/ 704 /*BOOL flag = FALSE;*/
720 int ret = FILE_CHCK_SUCCESSFUL; 705 int ret = FILE_CHCK_SUCCESSFUL;
721 - U32 *p1 = (U32 *)fData; 706 + U32 *p1 = (U32 *)TTYInfo.buff_Binfile;
722 BOOT_HEADER *p_header; 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 unsigned char baaddr[6]; 709 unsigned char baaddr[6];
725 LARGE_INTEGER ticks; 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 /*flag = TRUE;*/ 714 /*flag = TRUE;*/
730 715
731 return FILE_CHCK_SUCCESSFUL; 716 return FILE_CHCK_SUCCESSFUL;
732 } 717 }
733 -  
734 -  
735 -  
736 - p1 = (U32 *)fData; 718 + p1 = (U32 *)TTYInfo.buff_Binfile;
737 719
738 memcpy(baaddr,dft_bdaddr,sizeof(baaddr)); 720 memcpy(baaddr,dft_bdaddr,sizeof(baaddr));
739 721
@@ -747,7 +729,7 @@ int fileCheck(char *fData,char *dataLen) @@ -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 /***********header check*********************/ 733 /***********header check*********************/
752 if (ret == FILE_CHCK_SUCCESSFUL) 734 if (ret == FILE_CHCK_SUCCESSFUL)
753 { 735 {
@@ -755,7 +737,7 @@ int fileCheck(char *fData,char *dataLen) @@ -755,7 +737,7 @@ int fileCheck(char *fData,char *dataLen)
755 { 737 {
756 ret = WRONG_FILE_FORMAT; 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 ret = WRONG_FILE_FORMAT; 742 ret = WRONG_FILE_FORMAT;
761 } 743 }
@@ -765,7 +747,7 @@ int fileCheck(char *fData,char *dataLen) @@ -765,7 +747,7 @@ int fileCheck(char *fData,char *dataLen)
765 if (ret == FILE_CHCK_SUCCESSFUL) 747 if (ret == FILE_CHCK_SUCCESSFUL)
766 { 748 {
767 int checksum = 0; 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 for(i=0;i<(p_header->rx_total_bytes-4)/4;i++) 751 for(i=0;i<(p_header->rx_total_bytes-4)/4;i++)
770 { 752 {
771 checksum += *p1++; 753 checksum += *p1++;
@@ -786,8 +768,10 @@ int fileCheck(char *fData,char *dataLen) @@ -786,8 +768,10 @@ int fileCheck(char *fData,char *dataLen)
786 baaddr[1] = (unsigned char)(ticks.LowPart>>8)&0x000000ff; 768 baaddr[1] = (unsigned char)(ticks.LowPart>>8)&0x000000ff;
787 baaddr[2] = (unsigned char)(ticks.LowPart>>16)&0x000000ff; 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 else 776 else
793 { 777 {
@@ -815,29 +799,18 @@ int fileCheck(char *fData,char *dataLen) @@ -815,29 +799,18 @@ int fileCheck(char *fData,char *dataLen)
815 *p++ = 0; 799 *p++ = 0;
816 *p++ = 0; 800 *p++ = 0;
817 *p++ = 0; 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 memcpy(p,baaddr,sizeof(baaddr)); 802 memcpy(p,baaddr,sizeof(baaddr));
827 p+=6; 803 p+=6;
828 804
829 //if (flag) 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 else 809 else
835 { 810 {
836 OutputDebugString("àÓàÓàÓ\n"); 811 OutputDebugString("àÓàÓàÓ\n");
837 p = fData + MAC_ADDR_OFFSET + 0X1000 + 0xb20; 812 p = fData + MAC_ADDR_OFFSET + 0X1000 + 0xb20;
838 }*/ 813 }*/
839 -  
840 -// "Optek Bt\0\0"  
841 *p++ = 'O'; 814 *p++ = 'O';
842 *p++ = 'p'; 815 *p++ = 'p';
843 *p++ = 't'; 816 *p++ = 't';
@@ -846,7 +819,6 @@ int fileCheck(char *fData,char *dataLen) @@ -846,7 +819,6 @@ int fileCheck(char *fData,char *dataLen)
846 *p++ = ' '; 819 *p++ = ' ';
847 *p++ = 'B'; 820 *p++ = 'B';
848 *p++ = 't'; 821 *p++ = 't';
849 - // *p++ = 0;  
850 822
851 //u32 wr_cn; 823 //u32 wr_cn;
852 *p++ = 0; 824 *p++ = 0;
@@ -859,36 +831,15 @@ int fileCheck(char *fData,char *dataLen) @@ -859,36 +831,15 @@ int fileCheck(char *fData,char *dataLen)
859 *p++ = 0; 831 *p++ = 0;
860 *p++ = 0; 832 *p++ = 0;
861 // bt mac id 833 // bt mac id
862 -/* *p++ = 0x11;  
863 - *p++ = 0x12;  
864 - *p++ = 0x13;  
865 - *p++ = 0x14;  
866 - *p++ = 0x15;  
867 - *p++ = 0x16;*/  
868 memcpy(p,baaddr,sizeof(baaddr)); 834 memcpy(p,baaddr,sizeof(baaddr));
869 p+=6; 835 p+=6;
870 -  
871 //a-a5 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 if (ret == FILE_CHCK_SUCCESSFUL) 837 if (ret == FILE_CHCK_SUCCESSFUL)
884 { 838 {
885 int checksum = 0; 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 for(i=0;i<(p_header->rx_total_bytes-4)/4;i++) 841 for(i=0;i<(p_header->rx_total_bytes-4)/4;i++)
888 - {  
889 checksum += *p1++; 842 checksum += *p1++;
890 - }  
891 -  
892 *p1 = checksum; 843 *p1 = checksum;
893 p_header->rx_checksum = checksum; 844 p_header->rx_checksum = checksum;
894 } 845 }
@@ -897,29 +848,21 @@ int fileCheck(char *fData,char *dataLen) @@ -897,29 +848,21 @@ int fileCheck(char *fData,char *dataLen)
897 848
898 DWORD WINAPI TransferThreadProc(LPVOID lpV) 849 DWORD WINAPI TransferThreadProc(LPVOID lpV)
899 { 850 {
900 - DWORD dwPacketSize, dwMaxPackets, dwFileSize;  
901 DWORD dwStartTime; 851 DWORD dwStartTime;
902 HWND hWndProgress; 852 HWND hWndProgress;
903 - HANDLE hFileHandle; 853 + //HANDLE hFileHandle;
904 HANDLE hDataHeap; 854 HANDLE hDataHeap;
905 BOOL fStarted = TRUE; 855 BOOL fStarted = TRUE;
906 BOOL fAborting = FALSE; 856 BOOL fAborting = FALSE;
907 BOOL userAborting = TRUE; 857 BOOL userAborting = TRUE;
908 - char *lpfileBuf;  
909 char *pRead; 858 char *pRead;
910 - DWORD dwRead;  
911 int err; 859 int err;
912 -  
913 -  
914 - hFileHandle = (HANDLE) lpV; 860 + DWORD dwRead = TTYInfo.dwRead;
  861 + //hFileHandle = (HANDLE) lpV;
915 hWndProgress = GetDlgItem(ghWndStatusDlg, IDC_TRANSFERPROGRESS); 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 SendMessage(hWndProgress, PBM_SETSTEP, (WPARAM) 1, 0); 866 SendMessage(hWndProgress, PBM_SETSTEP, (WPARAM) 1, 0);
924 SendMessage(hWndProgress, PBM_SETPOS, 0, 0); 867 SendMessage(hWndProgress, PBM_SETPOS, 0, 0);
925 } 868 }
@@ -928,7 +871,7 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV) @@ -928,7 +871,7 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
928 if (!fAborting) { 871 if (!fAborting) {
929 SYSTEM_INFO sysInfo; 872 SYSTEM_INFO sysInfo;
930 GetSystemInfo(&sysInfo); 873 GetSystemInfo(&sysInfo);
931 -// hDataHeap = HeapCreate(0, sysInfo.dwPageSize * 2, sysInfo.dwPageSize * 10); 874 + //hDataHeap = HeapCreate(0, sysInfo.dwPageSize * 2, sysInfo.dwPageSize * 10);
932 hDataHeap = HeapCreate(0, sysInfo.dwPageSize * 20,0); 875 hDataHeap = HeapCreate(0, sysInfo.dwPageSize * 20,0);
933 if (hDataHeap == NULL) { 876 if (hDataHeap == NULL) {
934 ErrorReporter("HeapCreate (Data Heap)"); 877 ErrorReporter("HeapCreate (Data Heap)");
@@ -937,19 +880,11 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV) @@ -937,19 +880,11 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
937 } 880 }
938 881
939 /**********************check file*********************************/ 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 if (err == WRONG_FILE_FORMAT) 889 if (err == WRONG_FILE_FORMAT)
955 { 890 {
@@ -977,7 +912,7 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV) @@ -977,7 +912,7 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
977 912
978 // inform writer thread that a file is about to be transferred 913 // inform writer thread that a file is about to be transferred
979 if (!fAborting) { 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 fAborting = TRUE; 916 fAborting = TRUE;
982 917
983 } 918 }
@@ -992,7 +927,7 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV) @@ -992,7 +927,7 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
992 char * lpDataBuf; 927 char * lpDataBuf;
993 928
994 // transfer file, loop until all blocks of file have been read 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 pWrite = HeapAlloc(ghWriterHeap, 0, sizeof(WRITEREQUEST)); 931 pWrite = HeapAlloc(ghWriterHeap, 0, sizeof(WRITEREQUEST));
997 932
998 if ((lpDataBuf != NULL) && (pWrite != NULL)) { 933 if ((lpDataBuf != NULL) && (pWrite != NULL)) {
@@ -1001,13 +936,15 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV) @@ -1001,13 +936,15 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
1001 936
1002 // read from file into new buffer 937 // read from file into new buffer
1003 //if (ReadFile(hFileHandle, lpDataBuf, dwPacketSize, &dwRead, NULL)) { 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 memcpy(lpDataBuf,pRead,dwRead); 948 memcpy(lpDataBuf,pRead,dwRead);
1012 WriterAddExistingNode(pWrite, WRITE_FILE, dwRead, 0, lpDataBuf, hDataHeap, hWndProgress); 949 WriterAddExistingNode(pWrite, WRITE_FILE, dwRead, 0, lpDataBuf, hDataHeap, hWndProgress);
1013 // eof 950 // eof
@@ -1052,27 +989,16 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV) @@ -1052,27 +989,16 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
1052 if (WaitForSingleObject(hTransferAbortEvent, 0) == WAIT_OBJECT_0) 989 if (WaitForSingleObject(hTransferAbortEvent, 0) == WAIT_OBJECT_0)
1053 fAborting = TRUE; 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 OutputDebugString("Xfer: Done sending packets.\n"); 992 OutputDebugString("Xfer: Done sending packets.\n");
1067 993
1068 if (fAborting) { 994 if (fAborting) {
1069 // inform writer that transfer is aborting 995 // inform writer that transfer is aborting
1070 996
1071 OutputDebugString("Xfer: Sending Abort Packet to writer\n"); 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 else 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 // wait til writer thread finishes with all blocks 1004 // wait til writer thread finishes with all blocks
@@ -1097,7 +1023,7 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV) @@ -1097,7 +1023,7 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
1097 fAborting = TRUE; 1023 fAborting = TRUE;
1098 OutputDebugString("Transfer abort signal rec'd\n"); 1024 OutputDebugString("Transfer abort signal rec'd\n");
1099 OutputDebugString("Xfer: Sending Abort Packet to writer\n"); 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 ErrorReporter("Can't add abort packet\n"); 1027 ErrorReporter("Can't add abort packet\n");
1102 break; 1028 break;
1103 case WAIT_TIMEOUT: break; 1029 case WAIT_TIMEOUT: break;
@@ -1113,10 +1039,10 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV) @@ -1113,10 +1039,10 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
1113 1039
1114 // report statistics 1040 // report statistics
1115 if (!fAborting) 1041 if (!fAborting)
1116 - ShowTransferStatistics(GetTickCount(), dwStartTime, dwFileSize); 1042 + ShowTransferStatistics(GetTickCount(), dwStartTime, TTYInfo.dwPacketSize);
1117 1043
1118 // break down metrics 1044 // break down metrics
1119 - PostMessage(hWndProgress, PBM_SETPOS, 0, 0); 1045 + //PostMessage(hWndProgress, PBM_SETPOS, 0, 0);
1120 1046
1121 // break down heaps 1047 // break down heaps
1122 if (hDataHeap != NULL) { 1048 if (hDataHeap != NULL) {
@@ -1129,7 +1055,7 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV) @@ -1129,7 +1055,7 @@ DWORD WINAPI TransferThreadProc(LPVOID lpV)
1129 // clean up after the file transfer. 1055 // clean up after the file transfer.
1130 if ((!fAborting)|| (!userAborting)) 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 // exit thread 1061 // exit thread
@@ -337,8 +337,8 @@ void WriterFile(PWRITEREQUEST pWrite) @@ -337,8 +337,8 @@ void WriterFile(PWRITEREQUEST pWrite)
337 // 337 //
338 // update progress indicator (even if aborting) 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 return; 343 return;
344 } 344 }
@@ -383,7 +383,7 @@ HISTORY: Date: Author: Comment: @@ -383,7 +383,7 @@ HISTORY: Date: Author: Comment:
383 11/20/95 AllenD Took out all test code 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 return; 388 return;
389 } 389 }
Please register or login to post a comment