Например TDA7294

Форум РадиоКот • Просмотр темы - Работа с COM портом
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Сб май 24, 2025 02:08:13

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 44 ]    , 2,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Сб июн 27, 2015 09:38:47 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 178
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3373
Рейтинг сообщения: 0
kalobyte, DS-датчик в отличие от простого программатора, использует порт по прямому назначению, т. е. обмен данными на стандартных скоростях через линии TXD и RXD. Дополнительные линии порта не участвуют в обмене данными. Поэтому будет работать не только с "железным" портом, но и его эмуляторами, типа USB-UART.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Сб июн 27, 2015 23:08:24 
Друг Кота

Карма: 13
Рейтинг сообщений: 84
Зарегистрирован: Чт сен 20, 2007 14:08:00
Сообщений: 13796
Рейтинг сообщения: 0
так у него же свой протокол, не юарт
там свои тайминги и формат битов
я что-то не видел, чтобы этот датчик висел на юарт выводах у мк, обычно берут любой вывод и таймер

_________________
тематические ответы только в форуме, в приват не пишите


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Сб июн 27, 2015 23:36:33 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 178
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3373
Рейтинг сообщения: 0
kalobyte писал(а):
так у него же свой протокол, не юарт
Это не значит что они не совместимы.

kalobyte писал(а):
я что-то не видел, чтобы этот датчик висел на юарт выводах у мк
Смотрите. http://we.easyelectronics.ru/STM32/esch ... vleno.html
http://electronix.ru/forum/lofiversion/ ... 93588.html
http://bascomavr.3bb.ru/viewtopic.php?id=1129#p14623


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Пн июн 29, 2015 02:14:26 
Друг Кота

Карма: 13
Рейтинг сообщений: 84
Зарегистрирован: Чт сен 20, 2007 14:08:00
Сообщений: 13796
Рейтинг сообщения: 0
Цитата:
Потом прочел небезызвестный аппнот от maxim Using a UART to Implement a 1-Wire Bus Master

ну вот, мне он не был известен :shock:
сейчас почитаем

_________________
тематические ответы только в форуме, в приват не пишите


Вернуться наверх
 
Открыт интернет-магазин MEAN WELL.Market – весь ассортимент MEAN WELL, выгодные цены

Открыта удобная площадка с выгодными ценами, поставляющая весь ассортимент продукции, производимой компанией MEAN WELL – от завоевавших популярность и известных на рынке изделий до новинок. MEAN WELL.Market предоставляет гарантийную и сервисную поддержку, удобный подбор продукции, оперативную доставку по России. На сайте интернет-магазина посетители смогут найти обзоры, интересные статьи о применении, максимальный объем технических сведений.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Пн июн 29, 2015 10:53:57 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Ср дек 15, 2010 14:37:38
Сообщений: 213
Рейтинг сообщения: 0
Всем день добрый, за выходные стало проясняться с работой COM, решил начать собирать схему:
Изображение
конечно вместо 595 будут стоять светодиоды пока, что.... Потом поставлю 155тм2 буду её мучать :lol:

Нашёл под с++ код как дёргать за ноги com но можете пояснить немного код особенно по ногам - какие ноги дёргаем именно, куски кода отвечают за это.... Не получилось связаться с автором поста на форуме т.к посту 5 лет уже.
Код:
HANDLE hFile; // файл порта
DWORD ModemStat,bc;
DCB dcb;
COMMTIMEOUTS ct;
char         *buf_out="Test string";
char         *buf_in;
LPCTSTR      FileName="COM1";
 
dcb.DCBlength=sizeof(DCB);
    BuildCommDCB("baud=9600 parity=N data=8 stop=1",&dcb);
    dcb.fNull=TRUE;
   
    ct.ReadTotalTimeoutConstant=2000; //чтение файла произаодиться не более 2с иначе завершение чтения
    ct.ReadIntervalTimeout=10;
    ct.ReadTotalTimeoutMultiplier=0;
    ct.WriteTotalTimeoutMultiplier=ct.WriteTotalTimeoutConstant=0;
 
   
 
 
    hFile = CreateFile(FileName,                    //открываем порт COM1
                        GENERIC_READ|GENERIC_WRITE,
                        0,
                        NULL,
                        OPEN_EXISTING,
                        0,
                        NULL);
 
    if(hFile==INVALID_HANDLE_VALUE)//Если не получилось
    {
        MessageBox("Не удалось открыть порт COM1!", "Ошыбка", MB_ICONERROR);\
            FileName="COM2";     
                hFile = CreateFile(FileName,
                                    GENERIC_READ|GENERIC_WRITE, //Открываем порт COM2
                                    0,
                                    NULL,
                                    OPEN_EXISTING,
                                    0,
                                    NULL);
 
                 if(hFile==INVALID_HANDLE_VALUE)
                    {
                         MessageBox("Не удалось открыть порт COM2!", "Ошыбка", MB_ICONERROR);
                    }
                    else
                     {
                         MessageBox("Порт COM2 успешно открыт", "Ok", MB_OK); 
                     }
   
    }
    else
    {
        MessageBox("Порт COM1 успешно открыт", "Ok", MB_OK); 
    }
   
    SetCommState(hFile,&dcb);
    SetCommTimeouts(hFile,&ct);
    PurgeComm(hFile,PURGE_TXCLEAR|PURGE_RXCLEAR);
    SetupComm(hFile,256,256);
 
 
void CTestComDlg::OnButton9()
{
//записатьTD прочитатьRD
 
buf_in=(char*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,strlen(buf_out)+1);
    WriteFile(hFile,buf_out,strlen(buf_out),&bc,NULL);
    if (ReadFile(hFile,buf_in,strlen(buf_out),&bc,NULL))
 
   
 
    {if (*buf_in==*buf_out)
    {
        MessageBox("Сигнал 1", "ОК", MB_OK);
    }
    else
    {
        MessageBox("Сигнал 0", "Ошыбка", MB_ICONERROR); 
    }
    }
   
 
    HeapFree(GetProcessHeap(),0,buf_in);
 
 
}
 
void CTestComDlg::OnButton5()
{
    // read CD(1)
    GetCommModemStatus(hFile,&ModemStat);
    if ((ModemStat&&MS_RLSD_ON)!=0)
    {
        MessageBox("Сигнал 1", "ОК", MB_OK);
    }
    else
    {
        MessageBox("Сигнал 0", "Ошыбка", MB_ICONERROR); 
    }   
}
 
 
 
 
void CTestComDlg::OnButton7()
{
    // read CTS(8)
   
    GetCommModemStatus(hFile,&ModemStat);
    if ((ModemStat && MS_CTS_ON)!=0)
    {
        MessageBox("Сигнал 1", "ОК", MB_OK);
    }
    else
    {
        MessageBox("Сигнал 0", "Ошыбка", MB_ICONERROR); 
    }
}
 
void CTestComDlg::OnButton6()
{
    // read DSR(6)
    GetCommModemStatus(hFile,&ModemStat);
    if ((ModemStat && MS_DSR_ON)!=0)
    {
        MessageBox("Сигнал 1", "ОК", MB_OK);
    }
    else
    {
        MessageBox("Сигнал 0", "Ошыбка", MB_ICONERROR); 
    }
   
}
 
void CTestComDlg::OnButton8()
{
    // read RI(9)
    GetCommModemStatus(hFile,&ModemStat);
    if ((ModemStat && MS_RING_ON)!=0)
    {
        MessageBox("Сигнал 1", "ОК", MB_OK);
    }
    else
    {
        MessageBox("Сигнал 0", "Ошыбка", MB_ICONERROR); 
    }
}
 
 
 
void CTestComDlg::OnButton10()
{
//записать TD
    for (int i=0;i<100;i++)
    {
        WriteFile(hFile,buf_out,strlen(buf_out),&bc,NULL);
    }
   
}


Вернуться наверх
 
LED-драйверы MOSO - надежные решения для индустриальных приложений

Продукция MOSO предназначена в основном для индустриальных приложений, использует инновационные решения на основе более 200 собственных патентов для силовой электроники и соответствует международным стандартам. LED-драйверы MOSO применяются в системах наружного освещения разных отраслей, включая промышленность, сельское хозяйство, транспорт и железную дорогу. В ряде серий реализована возможность дистанционного контроля и программирования работы по заданному сценарию. Разберем решения MOSO подробнее>>
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Пн июн 29, 2015 11:37:08 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 178
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3373
Рейтинг сообщения: 0
gdoom писал(а):
решил начать собирать схему
Это уже нестандартное использование порта. Может не работать с USB to UART.

gdoom писал(а):
Нашёл под с++
Код точно для этой схемы?


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Пн июн 29, 2015 12:12:27 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Ср дек 15, 2010 14:37:38
Сообщений: 213
Рейтинг сообщения: 0
Мурик писал(а):
gdoom писал(а):
решил начать собирать схему
Это уже нестандартное использование порта. Может не работать с USB to UART.
- на это до лампочки, всё ровно на первых парах буду юзать плату COM - если не изменяет память драйвер com+lpt называется, на неё 2COM и 1-lpt порт....
gdoom писал(а):
Нашёл под с++
Код точно для этой схемы?


нет код левый, но там как я понял опрос и подача сигнала на ножки com порта, то что и требуется - первое, что подача сигнала только - т.к для приёма передачи в дальнейшем буду юзать max232


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Пн июн 29, 2015 13:47:29 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 178
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3373
Рейтинг сообщения: 0
Есть у меня программа, которая передает данные подобным образом. Немного подправил ее (был некоторый не нужный в данной схеме функционал). Может пригодится.


Вложения:
COM to 74HC595.zip [46.92 KiB]
Скачиваний: 194
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Пн июн 29, 2015 14:58:53 
Друг Кота

Карма: 13
Рейтинг сообщений: 84
Зарегистрирован: Чт сен 20, 2007 14:08:00
Сообщений: 13796
Рейтинг сообщения: 0
gdoom писал(а):
нет код левый, но там как я понял опрос и подача сигнала на ножки com порта

как раз таки нету там никакой подачи
никогда не бери левый код, если он привязан к железу и ты лично не запустил пример и пример отработал как надо
только тогда можно использовать куски для себя

то что ты делаеш - нестандартное использование порта, от которого я и предупреждал тебя
этот режим называется bit bang или манипуляция выводами, когда реализуется какой-то последовательный синхронный протокол через жопу
жопа тут в том, что тайминги не выдерживаются, т.к. виндовс не является системой реального времени
особенно это будет заметно при получении данных извне
если зажесь светодиоды в регистре - гавно вопрос, то получить поток байт уже будет куда сложнее

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

поэтому там используются только 2 и 3 выводы

_________________
тематические ответы только в форуме, в приват не пишите


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Пн июн 29, 2015 17:51:39 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Ср дек 15, 2010 14:37:38
Сообщений: 213
Рейтинг сообщения: 0
Мурик писал(а):
Есть у меня программа, которая передает данные подобным образом. Немного подправил ее (был некоторый не нужный в данной схеме функционал). Может пригодится.

спасибо покапаю :idea:

блин открыл - это на vb что ли писал? на с++ нету примера?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Пн июн 29, 2015 18:23:11 
Друг Кота
Аватар пользователя

Карма: 55
Рейтинг сообщений: 389
Зарегистрирован: Чт мар 20, 2008 01:06:40
Сообщений: 3230
Откуда: Севастополь
Рейтинг сообщения: 2
У меня есть на паскале, писано в дельфи.
Но выкладывать не буду, ибо уже представляю этакий кисляк в ответ "чО ж не на С++" ?
Дружище, даташит в руки, алгоритм работы там примитивный. А дальше - хоть на брэйнфаке.

_________________
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Пн июн 29, 2015 18:28:37 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 178
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3373
Рейтинг сообщения: 0
Код на PureBasic. Там в конце исходника написано же (IDE добавляет в файл свою версию и некоторые настройки компиляции).

gdoom писал(а):
на с++ нету примера
Ищите, или сами перепишите. Код не сложный.
Кстати почему нужно именно на C++? Для учебного заведения?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Вт июн 30, 2015 03:40:23 
Друг Кота

Карма: 13
Рейтинг сообщений: 84
Зарегистрирован: Чт сен 20, 2007 14:08:00
Сообщений: 13796
Рейтинг сообщения: 0
у меня на сцайте есть пример на сях для управления регистром 595
тебе надо только там вместо пинов контроллера поставить функции управления конкретными пинами типа дтр, которые на схеме обозначены

вот пример
http://stackoverflow.com/questions/1853 ... s-platform
http://www.codeproject.com/Articles/992 ... rary-for-C

без хорошей библиотеки чистый вин апи это ад и израиль :)))

_________________
тематические ответы только в форуме, в приват не пишите


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Сб окт 10, 2015 18:35:02 
Родился

Зарегистрирован: Сб окт 10, 2015 18:26:37
Сообщений: 6
Рейтинг сообщения: 0
Мурик писал(а):
gdoom писал(а):
я мог получать данные с кажем с датчика температуры
С какого? Например DS18B20?
Можете посмотреть журнал Радио №1 2015. Там есть статья о работе с подобными датчиками через COM порт (в т. ч. виртуальный). Компонент приложения используемый в статье. ftp://ftp.radio.ru/pub/2015/01/OWire.zip
Его можно подключить к проекту VS и использовать для чтения температуры. Преимущество в том что не нужно знать как работать с COM портом и датчиком. Все это берет на себя компонент. А если все же хочется разобраться как это работает, можно посмотреть исходник компонента - файл OWire_Module.pbi находящийся в папке Library\Src.

gdoom писал(а):
USB пока сложновато...
Ну я бы так не сказал бы. Смотрите журнал Радио №4 2011. Там есть статья о работе с USB HID, а также компонент приложения, который сможете подключить к проекту VS C++.


Скачал по ссылке все три файла с расширениями .dll, .exp, .lib. Как установить библиотеку? Это и есть библиотека?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Вс окт 11, 2015 09:41:01 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 178
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3373
Рейтинг сообщения: 0
Библиотеку устанавливать не нужно. Ее функции следует вызывать из своего приложения.
Файл dll это и есть библиотека функций.
Файл lib содержит в себе данные для статического импорта. Нужен для связывания приложения с dll.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Вс окт 11, 2015 16:47:24 
Родился

Зарегистрирован: Сб окт 10, 2015 18:26:37
Сообщений: 6
Рейтинг сообщения: 0
Вложение:
Картинка1.jpg [92.12 KiB]
Скачиваний: 566
Мурик писал(а):
Библиотеку устанавливать не нужно. Ее функции следует вызывать из своего приложения.
Файл dll это и есть библиотека функций.
Файл lib содержит в себе данные для статического импорта. Нужен для связывания приложения с dll.

Понял, спасибо! Где я ошибся?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Вс окт 11, 2015 17:37:52 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 178
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3373
Рейтинг сообщения: 0
В коде на скрине не указано откуда брать функции. :dont_know:
Но если предполагается писать на PB (как на скрине), то нет необходимости в dll. Можно использовать ее исходный код. :)
Код:
XIncludeFile "OWire_Module.pbi"
UseModule OWire

OW_OpenPort("COM1", 0)
Эти файлы в архиве во вложении.

Но если нужно использовать dll, то из архива (путь Еxamples\PureBasic\Windows\Src) нужно скопировать файл OWire_Module_dll.pbi и добавить эту строку в начало кода.
Код:
XIncludeFile "OWire_Module_dll.pbi"


Вложения:
OWire_Test.rar [5.86 KiB]
Скачиваний: 170
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Вс окт 11, 2015 18:32:44 
Мучитель микросхем
Аватар пользователя

Карма: 6
Рейтинг сообщений: 87
Зарегистрирован: Вс янв 09, 2011 23:05:37
Сообщений: 450
Откуда: СССР
Рейтинг сообщения: 0
http://piclist.ru/S-COM-THREAD-RUS/S-COM-THREAD-RUS.html

_________________
Иван Сусанин - первый полупроводник :solder:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Вс окт 11, 2015 18:34:28 
Родился

Зарегистрирован: Сб окт 10, 2015 18:26:37
Сообщений: 6
Рейтинг сообщения: 0
Мурик писал(а):
В коде на скрине не указано откуда брать функции. :dont_know:
Но если предполагается писать на PB (как на скрине), то нет необходимости в dll. Можно использовать ее исходный код. :)
Код:
XIncludeFile "OWire_Module.pbi"
UseModule OWire

OW_OpenPort("COM1", 0)
Эти файлы в архиве во вложении.

Но если нужно использовать dll, то из архива (путь Еxamples\PureBasic\Windows\Src) нужно скопировать файл OWire_Module_dll.pbi и добавить эту строку в начало кода.
Код:
XIncludeFile "OWire_Module_dll.pbi"

Спасибо, буду разбираться.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с COM портом
СообщениеДобавлено: Пн окт 19, 2015 18:16:24 
Родился

Зарегистрирован: Сб окт 10, 2015 18:26:37
Сообщений: 6
Рейтинг сообщения: 0
Мурик писал(а):
В коде на скрине не указано откуда брать функции. :dont_know:
Но если предполагается писать на PB (как на скрине), то нет необходимости в dll. Можно использовать ее исходный код. :)
Код:
XIncludeFile "OWire_Module.pbi"
UseModule OWire

OW_OpenPort("COM1", 0)
Эти файлы в архиве во вложении.

Но если нужно использовать dll, то из архива (путь Еxamples\PureBasic\Windows\Src) нужно скопировать файл OWire_Module_dll.pbi и добавить эту строку в начало кода.
Код:
XIncludeFile "OWire_Module_dll.pbi"


А что значит нулевой указатель?


Вложения:
Pointer_is_null.jpg [102.14 KiB]
Скачиваний: 582
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 44 ]    , 2,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y