📄 ftrans.c
字号:
BOOL PortSet(void)
{
int port = GCommData.Port;
int mode = GCommData.Parity | GCommData.ByteSize | GCommData.StopBits;
int hw = GCommData.Hw ? 3 : 0; /* bit0 and bit1 */
int sw = GCommData.Sw ? 12 : 0; /* bit2 and bit3 */
int ret ;
if((ret=sio_ioctl(port,GCommData.BaudRate,mode))!=SIO_OK){
MxShowError("sio_ioctl",ret);
return FALSE;
}
if((ret=sio_flowctrl(port,hw | sw))!=SIO_OK){
MxShowError("sio_flowctrl",ret);
return FALSE;
}
if((ret=sio_DTR(port,(GCommData.Dtr ? 1:0)))!=SIO_OK){
MxShowError("sio_DTR",ret);
return FALSE;
}
if(!GCommData.Hw){
if((ret=sio_RTS(port,(GCommData.Rts ? 1:0)))!=SIO_OK){
MxShowError("sio_RTS",ret);
return FALSE;
}
}
ShowStatus();
return TRUE;
}
BOOL ClosePort(void)
{
sio_close(GCommData.Port);
GbOpen = FALSE;
SwitchMenu(GhWnd);
ShowStatus();
return TRUE;
}
static void ShowStatus(void)
{
char szMessage[70];
char szbuf[20];
lstrcpy(szMessage,GszAppName);
if(GbOpen){
wsprintf(szbuf," -- COM%d,",GCommData.Port);
lstrcat(szMessage,szbuf);
LoadString(GhInst,IDS_BAUD50+GCommData.ibaudrate,
szbuf,20);
lstrcat(szMessage,szbuf);
lstrcat(szMessage,",");
LoadString(GhInst,IDS_PARITYNONE+GCommData.iparity,
szbuf,20);
lstrcat(szMessage,szbuf);
lstrcat(szMessage,",");
LoadString(GhInst,IDS_DATABIT5+GCommData.ibytesize,
szbuf,20);
lstrcat(szMessage,szbuf);
lstrcat(szMessage,",");
LoadString(GhInst,IDS_ONESTOPBIT+GCommData.istopbits,
szbuf,20);
lstrcat(szMessage,szbuf);
if(GCommData.Hw)
lstrcat(szMessage,",RTS/CTS");
if(GCommData.Sw)
lstrcat(szMessage,",XON/XOFF");
}
SetWindowText(GhWnd,szMessage);
}
static BOOL XmitFile(HWND hwnd)
{
OPENFILENAME ofn;
char szFile[_MAX_PATH];
char szFileTitle[_MAX_PATH];
char szFilter[] = "All file(*.*)|*.*|";
char chReplace;
int i;
DWORD dwThreadID;
chReplace = szFilter[strlen(szFilter)-1];
for(i=0;szFilter[i]!='\0';i++){
if(szFilter[i]==chReplace)
szFilter[i] = '\0';
}
lstrcpy(szFile,"*.*");
lstrcpy(szFileTitle,"*.*");
ZeroMemory(&ofn,sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFilter = szFilter;
ofn.nFilterIndex = 1;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFileTitle = szFileTitle;
ofn.nMaxFileTitle = sizeof(szFileTitle);
ofn.lpstrInitialDir = NULL;
ofn.lpstrTitle = "Select File to Transmit";
ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
if(!GetOpenFileName(&ofn))
return FALSE;
lstrcpy(GxFname,ofn.lpstrFile);
GftStop = CreateEvent(NULL,TRUE,FALSE,NULL);
GStatWnd = CreateDialog(GhInst,MAKEINTRESOURCE(IDD_STATUS),
hwnd,FtStatProc);
hFtThread = CreateThread(
(LPSECURITY_ATTRIBUTES) NULL,
0,
(LPTHREAD_START_ROUTINE) FtProc,
(LPVOID) hwnd,
0, &dwThreadID );
b_busy = TRUE;
return TRUE;
}
UINT APIENTRY OfHookProc(HWND hdlg,UINT uiMsg,WPARAM wParam,LPARAM lParam)
{
static BOOL m_bDlgJustCameUp;
switch(uiMsg){
case WM_INITDIALOG:
ShowWindow(GetDlgItem(hdlg,stc2),SW_HIDE);
ShowWindow(GetDlgItem(hdlg,stc3),SW_HIDE);
ShowWindow(GetDlgItem(hdlg,edt1),SW_HIDE);
ShowWindow(GetDlgItem(hdlg,lst1),SW_HIDE);
ShowWindow(GetDlgItem(hdlg,cmb1),SW_HIDE);
SetDlgItemText(hdlg,edt1,"Junk");
SetFocus(GetDlgItem(hdlg,lst2));
m_bDlgJustCameUp=TRUE;
return TRUE;
case WM_PAINT:
if (m_bDlgJustCameUp){
m_bDlgJustCameUp=FALSE;
SendDlgItemMessage(hdlg,lst2,LB_SETCURSEL,0,0L);
}
break;
}
return FALSE;
}
static BOOL RecvFile(HWND hwnd)
{
OPENFILENAME ofn;
char szFile[_MAX_PATH];
char szFileTitle[_MAX_PATH];
char szFilter[] = "All file(*.*)|*.*|";
char chReplace;
int i;
WORD wFileOffset;
DWORD dwThreadID;
chReplace = szFilter[strlen(szFilter)-1];
for(i=0;szFilter[i]!='\0';i++){
if(szFilter[i]==chReplace)
szFilter[i] = '\0';
}
lstrcpy(szFile,"*.*");
lstrcpy(szFileTitle,"*.*");
ZeroMemory(&ofn,sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFilter = szFilter;
ofn.nFilterIndex = 1;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFileTitle = szFileTitle;
ofn.nMaxFileTitle = sizeof(szFileTitle);
ofn.lpstrInitialDir = NULL;
if((GProtocol!=FTYMDM) && (GProtocol!=FTZMDM) && (GProtocol!=FTKERMIT)){
ofn.Flags = OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY;
ofn.lpstrTitle = "Select File to Receive";
if(!GetSaveFileName(&ofn))
return FALSE;
GetCurrentDirectory(_MAX_PATH-1,GrPath);
lstrcpy(GrFname,ofn.lpstrFile);
}else{
/* open dialog for user to select directory. */
/* ZModem, YModem, Kermit protocol will transfer
download file name in package */
ofn.Flags = OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY
| OFN_ENABLETEMPLATE | OFN_ENABLEHOOK ;
ofn.hInstance = GhInst;
ofn.lpTemplateName = MAKEINTRESOURCE(FILEOPENORD);
ofn.Flags &= ~OFN_EXPLORER;
ofn.lpstrTitle = "Select Folder";
ofn.lpfnHook = OfHookProc; /* change dialog style */
if(!GetSaveFileName(&ofn))
return FALSE;
wFileOffset = ofn.nFileOffset; //for convenience
ofn.lpstrFile[wFileOffset-1]=0;
SetCurrentDirectory(ofn.lpstrFile);
lstrcpy(GrPath,ofn.lpstrFile);
lstrcpy(GrFname,"");
}
GftStop = CreateEvent(NULL,TRUE,FALSE,NULL);
GStatWnd = CreateDialog(GhInst,MAKEINTRESOURCE(IDD_STATUS),
hwnd,FtStatProc);
hFtThread = CreateThread(
(LPSECURITY_ATTRIBUTES) NULL,
0,
(LPTHREAD_START_ROUTINE) FtProc,
(LPVOID) hwnd,
0, &dwThreadID );
b_busy = TRUE;
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -