全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3385
推到 Plurk!
推到 Facebook!

請教 RS232 在 Windows 下的最高鮑率

尚未結案
albano
一般會員


發表:1
回覆:1
積分:0
註冊:2003-04-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-03 18:01:28 IP:202.64.xxx.xxx 未訂閱
各位好 !    我用以下程式碼在 Windows XP 中執行    發覺只能使用 115200 或 以下的鮑率 但我在 COM1 的硬體設定中看到 128000 若用以下方式設定為 128000 時,  GetLastError 會回傳 87    在 Msdn 查到是 ERROR_INVALID_PARAMETER    有大大知道是什麼原因嗎 ? 還有更高速度可用嗎 ?        
DCB m_dcb;
    HANDLE        m_hCom;
    AnsiString astrTmp;
    
    m_dcb.DCBlength = sizeof(DCB);
    m_dcb.BaudRate  = (DWORD)128000;
    m_dcb.ByteSize  =8;
    m_dcb.Parity    =NOPARITY;    //NOPARITY and friends are #defined in windows.h
    m_dcb.StopBits  =ONESTOPBIT;        m_hCom = CreateFile("COM1",
                        GENERIC_READ | GENERIC_WRITE,
                        0,    /* comm devices must be opened w/exclusive-access */
                        NULL, /* no security attrs */
                        OPEN_EXISTING, /* comm devices must use OPEN_EXISTING */
                        0,    /* not overlapped I/O */
                        NULL  /* hTemplate must be NULL for comm devices */
                        );        if(m_hCom == INVALID_HANDLE_VALUE)
    {
        astrTmp = "Error: m_hCom = CreateFile 01, LastError="   AnsiString(GetLastError());
        Memo1->Lines->Append(astrTmp);
        return;
    }        if(!SetCommState(m_hCom, &m_dcb))
    {
        // something is hay wire, close the port and return
        CloseHandle(m_hCom);
        astrTmp = "Error: m_hCom = SetCommState 01, LastError="   AnsiString(GetLastError());
        Memo1->Lines->Append(astrTmp);
        return;
    }        CloseHandle(m_hCom);
fnk
高階會員


發表:40
回覆:149
積分:102
註冊:2004-01-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-05 02:52:23 IP:140.124.xxx.xxx 未訂閱
我不知道你的問題出在那.. 但...我按照你的程式去跑... 可以正常開啓com port沒問題.. 給你參考...^^ =========== 有興趣,就能進步 ===========
albano
一般會員


發表:1
回覆:1
積分:0
註冊:2003-04-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-05 12:40:18 IP:202.64.xxx.xxx 未訂閱
引言: 我不知道你的問題出在那.. 但...我按照你的程式去跑... 可以正常開啓com port沒問題.. 給你參考...^^ =========== 有興趣,就能進步 ===========
感謝回應 還在苦惱中 .... 難道是 Driver 的問題 ? 因為我是使用 Windows XP 內置的 "標準串列埠"
ldd
一般會員


發表:12
回覆:62
積分:19
註冊:2004-07-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-28 12:51:03 IP:59.120.xxx.xxx 未訂閱
hi albano 通常電腦Serial port的晶片最高只有支援到 115200 所以如果 開比115200高的baudrate會發生錯誤!!! 如果要開比較高的baudrate 必須要買高速卡.. 普通四port 460800 baudrate大慨要 一千多塊.... 不曉得目前最新的電腦可以到多少 這我就不清楚了 你可以看看你主機板的說明說 看看你的serial port的晶片最高速度可以到多少就知道了.
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-28 15:03:00 IP:210.69.xxx.xxx 未訂閱
如 ldd 所說 通常電腦Serial port的晶片最高只有支援到 115200 所以如果開比115200高的baudrate會發生錯誤!!! 一定要用 COM 嗎? 改用網路卡 ? USB 或 1394 呢 ? ********************* 如果您滿意答案,請結案 *********************
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
系統時間:2024-11-23 6:27:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!