Здравствуйте, гость ( Вход | Регистрация )
lanz | Дата 17.1.2015, 12:37 |
Потому что в COM порте нет такого понятия "сообщение", он работает побайтово. Побайтово принимает и побайтово отправляет. https://ru.wikipedia.org/wiki/Универсальный...риёмопередатчик |
|
casper17 | Дата 17.1.2015, 11:14 |
Добрый день. Подскажите пожалуйста почему у меня чтение с COM порта одного сообщения происходит за несколько раз? С Atmega8 отправляю данные массив unsigned char x[10]="";
А принимает их за несколько раз Раскрывающийся текст
Если попробовать цикл do while и добавлять к старому сообщению новое то Раскрывающийся текст
Почему он не принимает сразу его целиком? |
|
borune | Дата 29.10.2014, 15:04 |
Потому что по USB подается питание (5V) на USB/Serial конвертер и => все будет "работать" . а ведь ты чертовски прав |
|
kuzulis | Дата 29.10.2014, 14:27 |
Не понятно почему. Потому что по USB подается питание (5V) на USB/Serial конвертер и => все будет "работать" . |
|
borune | Дата 29.10.2014, 12:23 |
Имеется ввиду виртуальный порт. Конвертер USB/Serial находится в самом девайсе, поэтому, по идее, при выключенном девайсе конвертер тоже должен быть выключен. При этом порт в диспетчере виден и программно доступен. Не понятно почему. | |
kuzulis | Дата 29.10.2014, 11:47 |
Цитата там вроде не все так просто. если подключить устройство кабелем к порту, при этом не включая самого устройства, то порт обнаруживается и открывается безо всяких проблем. Хотя по идее это то же самое, что просто воткнуть в порт пустой кабель.. О каком порте речь? Об USB об SerialPort? Опять каша? Если имеется ввиду это: Цитата PC (железный COM1) RS232 [ ] <-- кабель (RS232/TTL например DB9 и прочее) --> [ некий девайс ] То у-во COM1 будет открываться в любом случае пока сам чип (который внутри PC не сгорел и фунциклирует). RS232 - это "низкоуровневый" интерфейс, он не определяет, подключено что-то или нет к его Rx/Tx и прочим линиям. Поэтому, подключен (или нет) некий девайс на том конце - без разницы - мы никогда это не узнаем пока не попробуем туда что-нить отправить/принять. COM1 всегда будет активен в ОС вне зависимости от того воткнул ли кто-то что-то к нему через RS232 кабель. Если имеется ввиду это: Цитата PC (вирт. COM1) USB[ ] <-- кабель (USB) --> [USB/Serial конвертер] <--- кабель (RS232/TTL например DB9 и прочее) --> [ некий девайс ] То у-во COM1 будет открываться в любом случае пока подключен USB кабель к USB/Serial конвертеру и пока конвертер не сгорел. Как только USB/Serial конвертер отключится - COM1 "исчезнет" из системы и станет hidden. Далее, если подключить что-то к конвертеру кабелем RS232 (или не подключать) - нам без разницы, т.к. COM1 всегда откроется.мы никогда это не узнаем пока не попробуем туда Но мы не может "программно" узнать что что-то подключено или нет на том конце RS232 пока что-нить не отправим/примем. |
|
borune | Дата 29.10.2014, 7:51 |
Цитата Если порт есть, но к нему не подключен кабель, то этот порт нельзя открыть, и, соответственно, записать в него также ничего нельзя. Но это уже похоже на фишечку драйвера виртуального ком-порта, и ее никак не исправишь наверное... Это значит что устройства (активного устройства типа "последовательный порт", или любого другого - неважно) НЕТ! И это никакая не фишечка драйвера. Это Windows ОС просто кеширует у-ва чтобы вновь не создавать симлинки при подключении этого-же устройства в этот-же USB порт (или просто того-же у-ва). там вроде не все так просто. если подключить устройство кабелем к порту, при этом не включая самого устройства, то порт обнаруживается и открывается безо всяких проблем. Хотя по идее это то же самое, что просто воткнуть в порт пустой кабель.. А я тебя же предупреждал что все это хрень, но куда уж мне.. Ты-же у нас спец. я, кажется, принес свои извинения |
|
kuzulis | Дата 28.10.2014, 23:12 |
Цитата Если порт есть, но к нему не подключен кабель, то этот порт нельзя открыть, и, соответственно, записать в него также ничего нельзя. Но это уже похоже на фишечку драйвера виртуального ком-порта, и ее никак не исправишь наверное... Это значит что устройства (активного устройства типа "последовательный порт", или любого другого - неважно) НЕТ! И это никакая не фишечка драйвера. Это Windows ОС просто кеширует у-ва чтобы вновь не создавать симлинки при подключении этого-же устройства в этот-же USB порт (или просто того-же у-ва). Вот, воткнул ты к примеру USB флешечку она определилась как диск Z, потом ты выдернул ее. Потом проенумеровал все USB mass-storage устройства которые когда-то были подключены к системе.. Нашел у-во которое было диском Z и попытался открыть.. И.. надеешься считать файлики из Z которого сейчас нету? Гы. Вместо флешки можешь попробовать любое USB у-во (да хоть Audio карту, хоть USB мышку, хоть черта лысого и прочее). Кроме того никто не запрещает в диспетчере у-в отобразить "hidden" устройства и удалить их. Тогда не будет никаких таких у-в перечисляться. Цитата да, а толку от этого.. А я тебя же предупреждал что все это хрень, но куда уж мне.. Ты-же у нас спец. |
|
borune | Дата 28.10.2014, 17:35 |
Да, скорее всего тут именно драйвер. Но главное ведь получилось, существование порта детектится. да, а толку от этого.. |
|
ahalaj | Дата 28.10.2014, 17:20 |
Да, скорее всего тут именно драйвер. Но главное ведь получилось, существование порта детектится. | |
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 26.4.2024, 16:56 |