Модем не реагирует на Win32 API - PullRequest
0 голосов
/ 08 апреля 2011

Привет У меня проблема с модемом и Win32 API.

Когда я открываю коммуникационный порт из моего исходного кода, порт готов к приему команд, но модем не записывает вывод. Все команды, которые я пишу, обрабатываются модемом, но я не получаю вывод от модема.

Если я подключаю модем с помощью гипертерминала, отключаю и затем использую свое программное обеспечение, то модем работает успешно.

Мой код выглядит следующим образом:

bool open() {
    unsigned long confSize = sizeof(COMMCONFIG);
    winCommConfig.dwSize = confSize;
    DWORD dwFlagsAndAttributes = 0;

    if (!isOpen()) {
        winHandle = CreateFileA(port.toAscii(), GENERIC_READ | GENERIC_WRITE,
                FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
                dwFlagsAndAttributes, NULL);
        if (winHandle != INVALID_HANDLE_VALUE) {
            /*
             * Configure the port settings.
             */
            GetCommConfig(winHandle, &winCommConfig, &confSize);
            GetCommState(winHandle, &(winCommConfig.dcb));

            /*
             * Configure port parameters.
             */
            winCommConfig.dcb.fBinary = TRUE;
            winCommConfig.dcb.fInX = FALSE;
            winCommConfig.dcb.fOutX = FALSE;
            winCommConfig.dcb.fAbortOnError = FALSE;
            winCommConfig.dcb.fNull = FALSE;

            setBaudRate(settings.BaudRate);
            setDataBits(settings.DataBits);
            setStopBits(settings.StopBits);
            setParity(settings.Parity);
            setFlowControl(settings.FlowControl);
            setTimeout(settings.TimeoutMillisec);

            /*
             * Set the final parameters.
             */
            SetCommConfig(winHandle, &winCommConfig, sizeof(COMMCONFIG));
            SetCommState(winHandle, &(winCommConfig.dcb));
        }
    }
    return isOpen();
}

Where:
port represents the comm port
baudrate: 115200
databits: 8
stopbits: 1
parity: none
flowcontrol: off

Что я делаю не так?

Это происходит, если я использую jablocom gdp-04. Когда я использую другие модемы (huawei, novatel, ...), он работает отлично.

Спасибо заранее. С уважением.

1 Ответ

1 голос
/ 08 апреля 2011

flowcontrol: off

Устройство не будет отправлять ничего, пока не увидит активные сигналы RTS и DTR, указывающие, что вы «онлайн» и готовы к приему.Вам необходимо установить fRtsControl = RTS_CONTROL_ENABLE и fDtrEnable = DTR_CONTROL_ENABLE.Включение аппаратного рукопожатия никогда не повредит, если предположить, что устройство реализует его правильно, особенно удобно при отладке.Также сделайте базовую проверку с HyperTerminal или Putty, чтобы убедиться, что проводка в порядке.

...