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

 
 
> Полное имя 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
Ответов
UniBomb
сообщение Dec 17 2008, 17:43
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 148
Регистрация: 26-05-05
Пользователь №: 5 416



Имя порта можно указывать и просто как "Comx", просто нао делать так:


Код
AnsiString portname = "Com1";
CreateFile(portname.c_str(), ....
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 17 2008, 18:42
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(UniBomb @ Dec 17 2008, 20:43) *
Имя порта можно указывать и просто как "Comx"

Тут уже написали как и почему. Перечитайте.


Цитата(ReAl @ Dec 17 2008, 19:29) *
wsprintf(

wsprintf() - то зачем? На чистом API все на 8bit кодировке работает.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ReAl
сообщение Dec 17 2008, 19:35
Сообщение #4


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

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



Цитата(zltigo @ Dec 17 2008, 20:42) *
wsprintf() - то зачем? На чистом API все на 8bit кодировке работает.
Это w означает не widw char, а то, что функция из винды (как бы не ещё с win3 тянется), wsprintf на 8 битах и работает. Это тот же sprintf, только из user32.dll
Иногда леплю по привычке для уменьшения размера бинарника.
В принципе сейчас как-то всё равно, mingw32-gcc пришивает sprintf из болтающейся в windows/system32 msvcrt.dll, ни в бинарнике места больше по сравнению с wsprintf не выходит, ни библиотек дополнительных тянуть не надо.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
777777
сообщение Dec 18 2008, 04:38
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(ReAl @ Dec 17 2008, 22:35) *
Это w означает не widw char, а то, что функция из винды (как бы не ещё с win3 тянется), wsprintf на 8 битах и работает. Это тот же sprintf, только из user32.dll

Кто вам сказал этих глупостей? smile.gif wsprintf - это функция для юникодных символов, а то, о чем ты говоришь, начинается с буквы 'l'. И использовать ее нет никакой необходимости - на размер бинарника это не влияет, так как к нему не лепится, а берется из msvcrt.dll
Go to the top of the page
 
+Quote Post
ReAl
сообщение Dec 18 2008, 06:14
Сообщение #6


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

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



Цитата(777777 @ Dec 18 2008, 06:38) *
Кто вам сказал этих глупостей? smile.gif wsprintf - это функция для юникодных символов, а то, о чем ты говоришь, начинается с буквы 'l'.
А Вы не могли бы цитатку из MSDN ? А то в статье printf, wprintf сказно, что wprintf - wide character версия (и формат у второй имеет тип const wchar_t * ), а в статье про wsprintf об этм ни слова. И приёмная строка да формат у wsprintf - типа LPSTR да LPCSTR соответственно, ещё от win3.х тянется небось... И живут они с wvsprintf в user32.dll, в отличие от wprintf, которая часть библиотеки VC и живёт в msvcrt.dll. И даже статьи про них в разных разделах - про wsprintf - в Platform SDK а про wprintf - в разделе про VC++.

Ну да, зглянул на компакт со старючим - в программах для win3.x у меня wsprintf был. "а то, о чём ты говоришь" - это swprintf

А префикс l - это lstrcpy(), lstrcpy() и компания. Никакого lsprintf в MSDN и в помине нет.

Цитата(777777 @ Dec 18 2008, 06:38) *
И использовать ее нет никакой необходимости - на размер бинарника это не влияет, так как к нему не лепится, а берется из msvcrt.dll
777777 не читатель, 777777 писатель? Я об этом сам написал в том же сообщении, которое было Вами процитировано. Парой строк ниже.
И там же написал, что это просто глупая привычка, которая иногда проскакивает, под BC3.1 да WIN3.x размер бинарника это увеличивало, а я не так много пишу под WIN, чтобы эта привычка ушла навсегда.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
777777
сообщение Dec 18 2008, 08:56
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(ReAl @ Dec 18 2008, 09:14) *
А Вы не могли бы цитатку из MSDN?

Да, точно, юникодная версия - это swprintf.

А вообще, хотя COM-порт открывается как обычный файл, работа с ним ведется особым образом, для него создается специальная структура - DCB блок, в MSDN об этом подробно написано в описании функции CreateFile


Цитата(ReAl @ Dec 18 2008, 00:18) *
И вона скиншоты наличных COM-портов и вызовов теста с разными параметрами (com5 берёт, значит, дело в количестве цифр).

Может это глюк билдера, но в VC я открывал порты под именами вида COM001 и все работало.
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
|- - zltigo   Цитата(ReAl @ Dec 17 2008, 22:35) Это w о...   Dec 17 2008, 20:01
- - *antzol*   Работаю в билдере, открываю примерно так: КодAnsiS...   Dec 17 2008, 19:48
|- - ReAl   Цитата(*antzol* @ Dec 17 2008, 21:48) Раб...   Dec 17 2008, 21:18
- - *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.01456 секунд с 7
ELECTRONIX ©2004-2016