реклама на сайте
подробности

 
 
> Полное имя COM-порта на Си?, \\.\COM....
Legotron
сообщение Dec 17 2008, 15:59
Сообщение #1


инопланетянин
***

Группа: Свой
Сообщений: 236
Регистрация: 24-12-06
Из: Питер
Пользователь №: 23 832



Доброго времени суток!

Использую CBuilder.
Подскажите пожалуйста как записать полное имя COM-порта на Си в строку??
должно быть:
Код
"\\.\COMx"

варианты:
Код
AnsiString Com_txt = "\\.\COM";
AnsiString Com_txt = "\\\\.\\COM";

не позволяют написать необходимую строку sad.gif
что приводит к ошибкам открытия порта

Помогите господа, тупая проблема, но уже начинает раздражать...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
*antzol*
сообщение Dec 17 2008, 19:48
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 6-11-07
Пользователь №: 32 085



Работаю в билдере, открываю примерно так:
Код
AnsiString PortName;
...
PortName = "COM23";
...
port = CreateFile(PortName.c_str(),
                       GENERIC_READ | GENERIC_WRITE, 0,
                       NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
Go to the top of the page
 
+Quote Post
ReAl
сообщение Dec 17 2008, 21:18
Сообщение #3


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(*antzol* @ Dec 17 2008, 21:48) *
Работаю в билдере, открываю примерно так:
Код
AnsiString PortName;
...
PortName = "COM23";
...
port = CreateFile(PortName.c_str(),
                       GENERIC_READ | GENERIC_WRITE, 0,
                       NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
Ну не знаю. Может, билдер сильно умный wink.gif.
Но вот текст завалялся, примерчик человеку делал по зажиганию светодиодов:
Код
#include <windows.h>
#include <stdio.h>

int main(int ac, char **av)
{
    int key;
    HANDLE hCom;
    
    if( ac < 2) {
        printf( "Use: test COMNAME\n");
        return 1;
    }
        
    hCom = CreateFile( av[1], GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
    
    if( hCom == INVALID_HANDLE_VALUE ) {
        printf( "Can't open %s", av[1]);
        return 1;
    }

    printf( "use r/R, d/D, b/B keys for clear/set RTS, DTR and BREAK state, q for quit (press CR after key)\n");
    
    while( (key = getchar()) != 'q' ) {
        switch(key) {
        case 'D':   EscapeCommFunction( hCom, SETDTR);  break;
        case 'd':   EscapeCommFunction( hCom, CLRDTR);  break;
        case 'R':   EscapeCommFunction( hCom, SETRTS);  break;
        case 'r':   EscapeCommFunction( hCom, CLRRTS);  break;
        case 'B':   SetCommBreak( hCom);    break;
        case 'b':   ClearCommBreak( hCom);  break;
        }
    }
        
    CloseHandle(hCom);
    
    return 0;
}
И вона скиншоты наличных COM-портов и вызовов теста с разными параметрами (com5 берёт, значит, дело в количестве цифр).
Прикрепленное изображение
Прикрепленное изображение


Кстати, прямые слеши в путях ("//./com22") тоже работают довольно давно, но не везде (в fopen() работают, в командной строке в dir - нет, оно буквы после / как ключи воспринимает), поэтому я лучше уж напишу с С-шной строке \\ для передачи каждого '\', и не буду путаться.

upd:
распаковал из архива BC++ 5.02, скомпилировал приведенній выше текст, результаты прогона совпадают 1:1


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Legotron   Полное имя COM-порта на Си?   Dec 17 2008, 15:59
- - 733259   Я открываю просто "COM1", "COM2...   Dec 17 2008, 16:06
- - ReAl   Просто "COM1" годится только до COM4 (ил...   Dec 17 2008, 16:29
- - UniBomb   Имя порта можно указывать и просто как "Comx...   Dec 17 2008, 17:43
|- - zltigo   Цитата(UniBomb @ Dec 17 2008, 20:43) Имя ...   Dec 17 2008, 18:42
|- - ReAl   Цитата(zltigo @ Dec 17 2008, 20:42) wspri...   Dec 17 2008, 19:35
|- - zltigo   Цитата(ReAl @ Dec 17 2008, 22:35) Это w о...   Dec 17 2008, 20:01
|- - 777777   Цитата(ReAl @ Dec 17 2008, 22:35) Это w о...   Dec 18 2008, 04:38
|- - ReAl   Цитата(777777 @ Dec 18 2008, 06:38) Кто в...   Dec 18 2008, 06:14
|- - 777777   Цитата(ReAl @ Dec 18 2008, 09:14) А Вы не...   Dec 18 2008, 08:56
- - *antzol*   ЦитатаНу не знаю. Может, билдер сильно умный . Ну ...   Dec 18 2008, 02:45
|- - ReAl   Цитата(*antzol* @ Dec 18 2008, 04:45) Ну ...   Dec 18 2008, 06:25
- - MALLOY2   в билдере 6 я так открываю Код String s; C...   Dec 18 2008, 06:22
- - *antzol*   Про com23 не помню, но выше десятого точно открыва...   Dec 18 2008, 07:47
- - Vlad27   Цитата(Legotron @ Dec 17 2008, 17:59) Доб...   Dec 19 2008, 11:09


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th August 2025 - 16:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.02616 секунд с 7
ELECTRONIX ©2004-2016