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

📄 ftrans.c

📁 pcom 非常好用的一个串口编程库
💻 C
📖 第 1 页 / 共 2 页
字号:

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 + -