Jump to content

Search the Community

Showing results for tags 'RS232'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
  • Радиоэлектроника для профессионалов
    • Световые эффекты и LED
    • Роботы и модели на ДУ-управлении
    • Автоматика
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Автомобильная электроника
    • Системы охраны и наблюдения. Личная безопасность
    • Питание
    • Электрика
    • Промышленная электроника
    • Ремонт
    • Металлоискатели
    • Измерительная техника
    • Мастерская радиолюбителя
    • Сотовая связь
    • Спутниковое ТВ
    • КВ и УКВ радиосвязь
    • Жучки
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
  • Товары и услуги
  • Разное
  • Переделки's ATX->ЛБП
  • Переделки's разные темы
  • Киловольты юмора's Юмор в youtube

Blogs

There are no results to display.

There are no results to display.

Marker Groups

  • Пользователи форума

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


ICQ


Skype


Интересы


Город


Сфера радиоэлектроники


Оборудование

Found 12 results

  1. Имеется китайский переходник USB\RS232, к нему собирал схему на MAX232+MAX485 без развязки. Попытался подключится этой приблудой к станку, с помощью ноутбука, но ему эта затея не очень понравилась и он всячески ругался ошибками интерфейса, соответственно прослушать ничего не удавалось. Видимо из-за постороннего напряжения на линии от моей поделки))) Поэтому появилась идея развязать мой ноут от станка с помощью такой вот схемы. Как думаете, прокатит это только для прослушки? Если да, то как именно подключится к переходнику, к каким выводам. Заранее благодарю)))) Терминатор цеплял, не помогло. Адаптер на микрухе ADM, маркировку увы не помню
  2. Привычка изобретать велосипеды не отпускает... Стало мало мне множества доступных терминальных программ для общения по последовательному порту со всякими железочками. Когда что-то делаешь с GSM-модемом, или с GPS-модулем, да чего там - даже с MP3-модулем, приходится многократно посылать команды в эти устройства и заниматься разбором ответов, от них приходящих. И, хотя до сих пор эти вопросы как-то решались, меня не оставляло чувство неудовлетворенности: слишком как-то все не просто, не элегантно, кривовато и не удобно. Ну, вот и решил сделать прямо, элегантно и удобно. https://cloud.mail.ru/public/Audn%2F95Vd3Xz1j Вот по этой ссылке лежат файлы бета-версии моей терминальной программки. Скачивать надо или все сразу, или, если трафика жалко, только EXE-шник. В последнем случае интерфейс будет на английском. Чем моя программка лучше прочих? Ну, во-первых, она может практически все, что могут другие аналогичные программы. Во всяком случае всё то, что реально за долгие годы радиолюбительства мне было нужно делать. Во-вторых, она обладает рядом мелких приятностей, например, может отображать принятые и отправленные данные разным цветом. Мелочь, а во многих других терминалках приходится вникать, что есть мои, а что чужие данные, особенно если они не текстовые, а бинарные... Еще во время приема текста можно увидеть и невидимые символы, т.е. коды которых меньше кода пробела (табуляции там всякие и прочие переводы строк). Причем увидеть можно в разном представлении, по желанию. Например, вот так, как любят паскалисты (я из них): А еще мой терминал умеет находить все имеющиеся в системе последовательные порты без того, чтобы в них срать (прошу пардону за мой французский). Большинство известных мне терминалок либо требуют вручную указать имя порта, а потом в лучшем случае ругнутся, что он отсутствует на самом деле, либо перебирают варианты сами, пытаясь открывать все подряд. Такие переборы почти всегда сопровождаются тем, что в "лишние" порты могут уйти какие-то данные, изменятся уровни на сигнальных линиях порта и т.п. неприятные явления могут возникать. Вот когда-то я делал приспособу, которая использовала сигнал RTS для включения настольной лампы по таймеру, и если кто-то вздумал бы определять наличие COM-порта путем его открывания-закрывания, лампочка бы стала мигать из-за этого. Моя же программка может найти даже порты с именами, отличными от COM* (виртуальный нуль-модем com0com умеет такие создавать с легкостью), и при этом не гадит во все порты подряд. Кстати, работать с COM97 для моей программы так же просто, как и с COM1, а многие популярные терминалы вообще дальше COM4 не видят... И еще один нюансик: моя программка по умолчанию сразу открывает выбранный порт, не требуя всяких кнопок "Подключить" и т.п., чем грешат абсолютно все другие терминалы. Но ведь если вы собрались с портом работать, он должен быть открыт - зачем же еще кнопки добавлять? Но, случаи бывают разные, и закрыть порт вы всегда сможете. Чтобы повторить то, что уже было отправлено, не надо "программировать" какие-то макросы, настраивать кнопки или писать скрипты - всё, что вводится пользователем, попадает в историю и выглядит, как кнопка. Нажмешь на такую кнопку - и текст уйдет повторно. Часть данных на кнопке не видно, но что именно там "увнутре" (не неонка!), ясно по начальному кусочку (см. скриншот выше). Кстати, заметили, что окошки можно склеивать в одно окно? Было окно текста без истории, а на тут стало с историей... Так это еще и не все - можно понаприклеивать их сколько угодно и куда угодно, забубенив интерфейс по-своему желанию! Хотите, чтобы все-все-все возможности программы были видны в одном окне? Пожалуйста: На скриншоте вы видите 99% всех окошек, что существуют в программе, и все они склеены в одно большое "главное". Оставшийся процент - это окна плагинов, которые могут быть, а могут и не быть. Вам кажется, что такой интерфейс слишком перегружен? Можно расчистить его, свернув "лишнее": При этом стоит навести мышку на желтенькую полосочку - соответствующее окошко тут же развернется и позволит с собой поработать, а потом свернется и не будет мешать. А если вы сторонник минимализма - можете оставить только самое нужное вам, например, окно HEX-данных и главное меню: Если надо отправлять данные пакетами, то вводить их тоже можно предельно комфортно в таком оконце: Это не фиксированные поля ввода, а заданные вот такой строкой "формата": Преамбула:\t%2xSender:\t\t%1xReciever:\t\t%1xCommand:\t%1dCRC:\t\t%2xEnd:\t\t%2x Если изменить эту строку, например, так: Start:\t%2xSender:\t\t%1xReciever:\t\t%1xCommand:\t%1d, то и поля ввода данных тоже изменятся, соответственно, и пакет тоже будет другой: Внимательный читатель наверняка заметит закономерную связь между полями ввода в окне и строкой формата: %1x означает поле ввода 1 байта в шестнадцатеричном формате, а %1u позволит ввести тот же байт в виде десятичного uint8_t. Само собой, int16_t вводится в поле %2d, а uint32_t в поле %4u. Можно и в двоичном виде: %4b. И так далее. То есть в программе встроен редактор пакетов данных практически на все случаи жизни. Много ли известно альтернатив? А еще ведь есть система фильтров! Каждый байт, поступающий на вход, может быть подвергнут разным проверкам, и пройдет на выход, т.е. появится в окне принятых данных, только в том случае, если все требования фильтров будут соблюдены. Например, классический старт-стопный пакет фиксированной длины выделить очень просто, при этом можно видеть только пакеты, в которых то или иное поле имеет конкретное значение, и не видеть остальные. Можно выделить только строки, начинающиеся с определенной последовательности символов, и т.п. Без ложной скромности скажу, что благодаря фильтрам придумать формат презентации данных, который может потребоваться в работе, и который бы не смогла показать моя программка, будет сложновато. При помощи фильтра форматирования, работающего на том же принципе строки-формата, как уже было показано, поступающие на вход данные можно "смешивать" с текстовыми дополнениями, получая очень наглядную картину. Форматировать можно по 8, 16 и 32 бита и представлять это в десятичном (со знаком или без него), двоичном, восьмеричном или шестнадцатеричном виде. Формат строк для составления пакета на отправку и для просмотра принимаемого пакета, практически одинаков (разница в том, что в строке формата символ \n ведет себя по-разному). Вот пример того, как можно наблюдать приходящие байты в двоичном представлении: Заметили окошко фильтра c параметром Format? Вот я его меняю и - вуаля! - совсем иной коленкор: И все эти фильтры реализованы в виде плагинов, т.е. не нужны - можно удалить и сэкономить несколько сотен килобайт места на диске. Понадобятся - можно в любой момент скачать и добавить. Вот такой терминал моей мечты получается. Пока не без багов, но я близок к завершению. Помощников бы в поиске ошибок... Такие дела... P.S. скриншоты разные, потому что на разных компах делались, на одном еще Win7, на другом уже Win10. И -433 отфильтрованных байта не баг, а фича: форматирующий фильтр не режет, а дополняет данные, вот и выходит, что пришел 1 байт, а ушло 10, значит, отфильтровалось -9
  3. Здравствуйте. Вопрос по подключению акустики 5.1 с активным сабом. Имеется сабвуфер с входом на два тюльпана AV и RS 232. Как правильно его подключить и зачем там выход RS 232? (Акустика 5.1 Meredian)
  4. Тестирую скорость порта. Есть МК соединенный через UART-USB CP2102 переходник к компу. МК передает пакеты длиной 64 байта на скорости 115200 со скоростью 100 пакетов в секунду. Комп передает ассинхронно данные 64 байт 100 пакетов / сек. Скорость USB 12 мегабит. Если передает данные только МК, то пакеты приходят с минимальной задержкой. Если включить передачу данных с ПК, то принимаемые ПК пакеты приходят сразу пачкой примерно 3 раза в секунду. Байты и сами пакеты не теряются. Пробовал большие скорости UART, но на склейку пакетов это не влияет. Есть способ сделать так, чтобы пакеты не склеивались друг с другом и приходили с минимальной задержкой? Это такая особенность USB шины или чипа CP2102?
  5. Добрый день, Сразу скажу, что в электронике опыта очень мало. Решил сделать самостоятельно управление через COM-порт. Уже примерно знаю, что мне нужно. Предвижу вопросы почему именно COM-порт а не USB. Причин несколько: Ком порт имеется и работает, программная часть элементарна и практически готова, схема нужна максимально простая, хочу для повышения опыта собрать самостоятельно, разбиратся с USB и сложными схемами/мк.конроллерами пока не хочу. Находил много различных схем для ком портов, но все они были достаточно сложными и/или, как правило, с избыточной для меня функциональностью... Собственно, что хочу сделать: Из программы посылаю на ком порт команду Dtr Enable, соответсвенно на 4м пине появляется где-то 6В (замерял тестером) Хотя вроде бы писали что по спецификации у ком порта от -12 до +12В (возможно имелись в виду RDX иTDX пины) Далее оптопара должна замкнуть цепь в устройстве (устройство маломощное, если нужна дополнительная информация сообщите). При закрытии порта/отмене DTR Enabe соответсвенно разорвать цепь. Схему прикрепляю к сообщению. Вопросы: Какой резистор необходимо подобрать и подойдет ли имеющаяся у меня оптопара АОТ128Д? Необходимы ли еще какие-то механизмы защиты порта, оптопары и устройства от возможного перегорания? Буду благодарен за любую помощь в подборе номиналов и исправлении схемы, т.к. опыт составления и расчета схем, к сожалению, отсутсвует.
  6. Объясните пожалуйста, почему у меня на 7 ноге RTS RS232 в компьютере, отрицательное напряжение относительно корпуса, хотя вроде должно быть положительное. И как заставить его стать положительным. Нужно для компортовского пульта ДУ.
  7. Здравствуйте форумчане. Есть проблема. Но давайте по порядку. Вот уже год как пользуюсь репликой ImaxB6. Давно хотел записать графики зарядки аккумуляторов, но для подключения ImaxB6 нужен переходник. И в один прекрасный день я все-таки купил USB To RS232/TTL PL2303HX вот здесь http://goo.gl/AMfcA4 Вот тут и начались мои танцы с бубном. Установил драйвер на данный девайс, установил LogView Studiо, подключил к ImaxB6 девайс и…. ничерта не работает. Начал проверять в диспетчере устройств, напротив девайса стоял значок знака восклицания в треугольнике. Дело ясное, что дрова не стали. Пошёл за дровами на оф. сайт производителя девайса http://goo.gl/qEIf2J и ….оказалось что девайс на чипе PL2303HX не работает в Windows8 (которая как раз у меня установлена). Но, обратившись к всезнающему googlesearch выяснил, что со старыми версиями драйверов на этот чип, девайс должен работать. Переставил дрова – и о чудо. Знак восклицания в диспетчере устройств пропал, что означает – драйвера стали как надо. Вот я на радостях снова все подключил и……. снова не работает. Ну, думаю, надул меня google. Ставлю VirtualBox и Windows XP. В Windows XP ставлю дрова, которые 100500% поддерживают работу девайса в этой версии Windows, ставлю LogView 2.7.4.490 подключаю все и снова не работает. Проверяю девайс PL2303HX на работоспособность. В Windows8 через Putty открыл порт адаптера, ввод-вывод текста работает, значит адаптер рабочий (на девайсе соединил RX и TX перемычкой). Ту же процедуру повторил в Windows XP через HyperTerminal – прибор рабочий. Обратился к продавцу девайса – он мне выслал файл с дровами и софтом для проверки девайса. Софт для проверки тоже показал работоспособность девайса. Ссылка на дрова от продавца http://goo.gl/j48N5i Под Windows XP LogView показывает, что девайс подключен (Раньше тоже так показывало). Под Windows8.1 LogView Studiо вообще не видит девайс. На муське посоветовали выпаять smd светодиоды. Тут возникла проблемка – как это сделать. Снова поискав в просторах интернета пришла вот такая идея. Колхоз, но на один раз самое то. Но эта процедура не дала результата. Я уже не знаю, что пробовать. Может кто сталкивался с подобной ситуацией. Подскажите что делать. Параметры систем: Windows8.1 x64 и Windows XP SP3 x86 Версии Logview: LogView Studiо 1.0.3662.0903 и LogView 2.7.4.490 На заряднике активирован пункт меню USB. Параметры подключения: RX от девайса PL2303HX подключен к TX ImaxB6, а GND к GND. Соединил аудиокабелем от CDRoma. Замерял мультиметром напряжение девайса PL2303HX: GND=GND RXD=0.06-01V TXD=3.38V 5.0V=5.1V 3.3V=3.38V А также ImaxB6: GND=GND TXD=0,11V Каким должно быть напряжение на TXD ImaxB6 с активированным пунктом "USB" во время заряда аккумулятора?
  8. Добрый день господа! Требуется ПЛК с разъемом RS232 и функцией переда данных по Wi-Fi либо по GPRS, желательно с лёгких софтом, что порекомендуете?
  9. Привет всем местным! Имеется вот такая схемка: Алгоритм на контроллере простой - принимает два байта данных по UART. Каждый байт подтверждает специальным байтом (не XOn/XOff). На ПК программа аналогичная, только наоборот - посылает два байта по одному и после каждого ожидает подтверждения. Но на ПК программа при чтении из порта говорит, что прочитано 0 байтов и выходит (так и должно быть - в плане выхода, а не нуля байтов). Алгоритм на контроллере: .include "m8def.inc" ; fosc = 8MHz ; Fuse-bits : MSB ... LSB (76543210) ; High byte: 11011111 ; Low byte : 11100100 .def temp = r22 .def temp2 = r18 .def dataTemp = r21 .def driveN = r19 .def stepsN = r20 ; ---------------------------------- ; подтверждение при передаче по uart - C5 .equ UART_ACK = 0b11000101 .def tempBaudRateH = r17 .def tempBaudRateL = r16 .equ DDR_SPI = DDRB .equ DD_SCK = DDB5 .equ DD_MISO = DDB4 .equ DD_MOSI = DDB3 ; uart baudrate coeff .equ uart_baudrate_h = 0b00000000 .equ uart_baudrate_l = 0b00110011 ; zero address rjmp MAIN; ; ------------ MAIN -------------- MAIN: ; configurations block ; сразу же отключаем прерывания cli ; stack init ldi temp, low(RAMEND); ldi temp2, high(RAMEND); out SPH, temp2; out SPL, temp; ; communications configuration rcall ConfigPorts; rcall SPI_MasterInit; rcall UART_Init; main_cycle: ; ожидаем приема от ПК по uart rcall UART_Rcv mov driveN, dataTemp ; номер двигателя ldi dataTemp, UART_ACK rcall UART_Snd nop rcall UART_Rcv mov stepsN, dataTemp ; число шагов mov dataTemp, driveN rcall select_Drive ; ожидаем по времени сколько необходимо для включения SPI на ведомом МК nop; nop; nop; nop; nop; nop; nop; ; передаем число шагов для выполнения mov dataTemp, stepsN rcall SPI_MasterTransmit ; немного ожидания nop; nop; nop; ; отключаем ведомый МК rcall deselect_Drives ; немного выжидаем nop; nop; ; говорим ПК, что мы передали ведомому МК данные ldi dataTemp, UART_ACK rcall UART_Snd rjmp main_cycle; ; ------------------------------- MAIN FINISHED ----------------------------- ; ----------- PROCS ------------ ; configure ports ; In - NONE ; Out - NONE ConfigPorts: ; config drive selector (PORTC) - 0,1,2,3,4,5 - out, 6 - in ldi temp, 0b00111111; out DDRC, temp; ; config (PORTB) - 0, MOSI, SCK, [1, 2 - unsused,for safety] - out, MISO - in. ldi temp, 0b00101111; out DDRB, temp; ; config UART (PORTD) - 1,2,3,4,5,6,7 - out, 0 - in ldi temp, 0b11111110; out DDRD, temp; ; globaly disable interrupts cli; ret ; allow SPI ; In - NONE ; Out - NONE SPI_MasterInit: ; Set MOSI and SCK direction to output, all others are set to input ldi temp, (1<<DD_MOSI)|(1<<DD_SCK) out DDR_SPI,temp ; Enable SPI, Master, set clock rate fck/4 ldi temp, (1<<SPE)|(1<<MSTR) out SPCR, temp ; Double the clock rate! up to fck/2 ; sbi SPSR, SPI2X ret ; SPI tranmition as master ; In - dataTemp - byte to be tranmitted ; Out - NONE SPI_MasterTransmit: ; Start transmission of data (r16) out SPDR, dataTemp Wait_Transmit: ; Wait for transmission complete sbis SPSR,SPIF rjmp Wait_Transmit ret ; UART initialization @ 9600 bps ; In - NONE ; Out - NONE UART_Init: ; setting baudrate ldi tempBaudRateH, uart_baudrate_h ldi tempBaudRateL, uart_baudrate_l out UBRRH, tempBaudRateH out UBRRL, tempBaudRateL ; Enable reciever and transmitter ldi dataTemp, (1<<RXEN)|(1<<TXEN) out UCSRB, dataTemp ; setting frame format: 8data bits, 2 stop bits ldi dataTemp, (1<<URSEL)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0) out UCSRC, dataTemp ret ; UART recieve proc ; In - NONE ; Out - dataTemp - recieved byte UART_Rcv: sbis UCSRA, RXC rjmp UART_Rcv in dataTemp, UDR ret ; UART send proc ; In - dataTemp - byte to be transmitted over UART ; Out - NONE UART_Snd: sbis UCSRA, UDRE rjmp UART_Snd CheckFinishPrevSnd: sbis UCSRA, TXC rjmp CheckFinishPrevSnd out UDR, dataTemp ret ; select drive ; In - dataTemp - drive to select ; Out - NONE select_Drive: andi dataTemp, 0b00000111 ori dataTemp, 0b00001000 out PORTC, dataTemp nop; nop; ret ; deselect drives ; In - NONE ; Out - dataTemp = 0 deselect_Drives: clr dataTemp ori dataTemp, 0b00110000 out PORTC, dataTemp nop; nop; ret На ПК программа выглядит так: //#include <stdafx.h> #include <Windows.h> #include <stdio.h> #include <windows.h> // ?? #define RDWR_BUFSZ 1 #define NDRIVES_MASK 0x07 #define DIR_MASK 0x01 #define DIR_POSITION 0x03 #define NSTEPS_MASK 0x7f #define ONE_BYTE 0xff #define uart_ack 0xc5 void Recv (HANDLE, unsigned char *); void Send (HANDLE, unsigned char *); int main(int argc, char* argv[]) { char file_name[256]; wchar_t wFlName[256]; LPCWSTR flName; HANDLE hSerial; DCB dcbSerialParams = {0}; COMMTIMEOUTS timeouts = {0xFFFFFFFF,0,0,0,1500}; unsigned int DriveN; unsigned int Nsteps; unsigned int Direction; unsigned int GotSmth; wchar_t lastError[1024]; unsigned char drvN, Nst, rslt; const WCHAR FileFullPath[] = {L"COM1"}; printf("Type in COM-port name. "); wscanf(L"%s", wFlName); //swprintf(wFlName, L"%s", file_name); printf("port - %s\n", wFlName); /** Начало. открытие порта. настройка **/ hSerial = CreateFile (FileFullPath, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hSerial == INVALID_HANDLE_VALUE) { printf(" Can't open port.\n"); system("pause"); ExitProcess(1); }; // Конфигурирования dcbSerialParams.DCBlength = sizeof(dcbSerialParams); if (!GetCommState(hSerial, &dcbSerialParams)) { printf(" Can't get port parameters\n"); CloseHandle(hSerial); ExitProcess(1); }; dcbSerialParams.BaudRate = CBR_9600; dcbSerialParams.fBinary = true; dcbSerialParams.fParity = NOPARITY; // False dcbSerialParams.fOutxCtsFlow = false; // no flow control by hardware (CTS) dcbSerialParams.fDtrControl = DTR_CONTROL_DISABLE; // no handshaking dcbSerialParams.fDsrSensitivity = false; // no look at DSR dcbSerialParams.fOutX = false; // no software flow control (Xon/Xoff) on Tx dcbSerialParams.fInX = false; // no software flow control (Xon/Xoff) on Rx dcbSerialParams.fErrorChar = false; // don't change error chars (checked by parity if it is True) dcbSerialParams.fNull = false; // we'll take even NULL characters dcbSerialParams.fRtsControl = RTS_CONTROL_DISABLE; // no flow control by hardware (RTS) // 8 битов данных, без бита четности, два стоповых бита dcbSerialParams.ByteSize = 8; dcbSerialParams.Parity = NOPARITY; dcbSerialParams.StopBits = TWOSTOPBITS; if(!SetCommState(hSerial, &dcbSerialParams)){ printf(" Can't set port parameters.\n"); CloseHandle(hSerial); system("pause"); ExitProcess(1); }; // время ожидания /* timeouts.ReadIntervalTimeout=50; timeouts.ReadTotalTimeoutConstant=50; timeouts.ReadTotalTimeoutMultiplier=10; timeouts.WriteTotalTimeoutConstant=50; timeouts.WriteTotalTimeoutMultiplier=10; */ if(!SetCommTimeouts(hSerial, &timeouts)){ printf(" Can't set port timeout.\n"); CloseHandle(hSerial); ExitProcess(1); }; do { printf("Type in drive No (0..7, 8 - exit) - "); scanf("%u", &DriveN); if (DriveN == 8) break; DriveN &= NDRIVES_MASK; printf("Number of halfsteps (0..127, 128 - exit) - "); scanf("%u", &Nsteps); if (Nsteps == 128) break; Nsteps &= NSTEPS_MASK; printf("Direction (1 - to there, 0 - from there) - "); scanf("%u", &Direction); Direction &= DIR_MASK; Direction <<= DIR_POSITION; Nsteps = Nsteps | Direction; drvN = DriveN & ONE_BYTE; printf(" Drive number is ready to be sent - %x\n", drvN); Send(hSerial, &drvN); Recv(hSerial, &rslt); if (rslt != uart_ack) { printf(" Wrong acknowledge got - %x\n", rslt); break; }; Nst = Nsteps & ONE_BYTE; printf(" Command is ready to be sent - %x\n", Nst); Send(hSerial, &Nst); Recv(hSerial, &rslt); if (rslt != uart_ack) { printf(" Wrong acknowledge - %x\n", rslt); break; }; } while (true); /** Конец. **/ CloseHandle(hSerial); system("pause"); return 0; } void Recv (HANDLE hSerial, unsigned char *szBuff) { DWORD dwBytesRW = 0; int RdWrResult; DWORD i; wchar_t lastError[1024]; // чтение RdWrResult = ReadFile(hSerial, szBuff, RDWR_BUFSZ, &dwBytesRW, NULL); printf(" Number of bytes read - %u\n", dwBytesRW); printf(" Data read - "); for (i = 0; i < dwBytesRW; i ++) { printf("%x ", szBuff[i]); }; printf("\n"); if(!RdWrResult){ printf("Fail on recieve.\n"); CloseHandle(hSerial); system("pause"); ExitProcess(1); } } void Send (HANDLE hSerial, unsigned char *szBuff) { DWORD dwBytesRW = 0; int RdWrResult; DWORD i; wchar_t lastError[1024]; // запись RdWrResult = WriteFile(hSerial, szBuff, RDWR_BUFSZ, &dwBytesRW, NULL); printf(" Number of bytes writen - %u\n", dwBytesRW); printf(" Data writen - "); for (i = 0; i < dwBytesRW; i ++) { printf("%x ", szBuff[i]); }; printf("\n"); if(!RdWrResult || dwBytesRW != RDWR_BUFSZ) { printf("Fail on send.\n"); CloseHandle(hSerial); system("pause"); ExitProcess(1); } } Связь настроена на формат 8N2. Помогите советом или хотя бы направлением на поиск. Еще вопрос небольшой. Хотелось бы мигалки впендюрить на линии RX и TX на MAX232. Что бы наблюдать есть ли вообще передача.
  10. Здравствуйте, пытаюсь установить связь между микроконтроллером (плата STM32F4DISCOVERY) и радиомодемом, управляемым АТ командами. Подключение к радиомодему осуществляется посредством rs232. Подключая ПК к модему всё работает, т.е. корректно отправляются команды и приходят ответы. Подключая МК к ПК связь есть, т.е. UART на МК рабочий. Подключая МК к модему связи нет - устройство не отвечает на команды. Сопряжение МК с модемом и с ПК осушествляю при помощи стандартной схему rs232-uart на max232. Прикрепляю фотографии экрана осциллографа (V/дел. = 5), ловил сигнал на TX линии: 1. МК подключен к ПК и МК высылает сообщения. Терминальная программа на ПК корректно получает высылаемые сообщения. 2. МК всё еще подключен к ПК + землю и ТX подключил к модему. Высылаемые сообщения больше не доходят до ПК. Может кто-нибудь сталкивался с подобным или может что-либо посоветовать?
  11. Добрый день. У меня есть навигатор и я подгрузил в него базу данных по камерам, контролирующих скорость. Очень удобно. Перед камерой притормаживаешь и штраф платить не надо. Учитывая, что навигатор мне нужен не всегда, а уведомление о камерах всегда, пришла мысль сделать девайс на ардуино, который будет информировать о камерах независимо от других девайсов. В наличии есть CF GPS Haicom HI-305III, со старого КПК. В блоке ЖПС есть слот для SD карты. Идея такова – подключить GPS к ардуино, закачать на карточку базу камер, ардуино должен будет считывать базу, определять местоположение и, если впереди на определенном расстоянии, появляется камера сообщать об этом, желательно голосом (впереди камера контролирующая скоростной режим, ограничение скорости 60 км/ч) Я начинающий, посему прошу помощи у форумчан. Я вскрыл CF GPS? Но дальше дело не продвинулось, от платы с чипом и слотом сд идет гибкая лента со множеством контактов, как определить за что отвечает каждый контакт не представляю.Однако у GPS есть возможность подключения не только CF, но и Serial (на com порт). Есть проводок, с одной стороны разъемом Mini-1394 для подключения к GPS и с COM и PS/2 с другой стороны для подключения к компьютеру. Данные идут по serial, а с ps/2 берется питание. Я так понимаю, что я могу использовать SR232 TTL переходник и не заморачиваться? C другой стороны я понимаю, что разница между RS232 и TTL по сути только в значении напряжения для обозначения единицы и нуля. у одного 12 вольт, у другого 5. Когда я подключаю GPS в разъем CF моего КПК, я так понимаю, что GPS запитывается 5 вольтами и нормально себя чувствует. Вопрос, могу ли я напрямую от ардуины подать на GPS питание 5 вольт и соединить RX TX gPS напрямую с Arduino? Не спалит GPS адруину 12 вольтами? Подскажите, а я обойдусь просто транзистором, как вот тут внизу на схеме показано, если мне нужно только получать данные с GPS? http://www.uchobby.c...ptor-explained/ Т.е. там просто один транзистор 2N3904, и три резистора 10К Или нужно полностью схему TX RX воспроизводить? Прошу помощи также по следующим пунктам: Как подключить CF GPS к ардуино? Как подключить встроенный СД слот к ардуино? Как научить ардуино подсасывать базу камер и сравнивать с текущим местоположением и определять, что камера например впереди на расстоянии 1 км Как организовать голосовой вывод? Я понимаю, что в процессе изучения данного форума и остальных материалов, я найду со временем ответы на большинство вопросов, но если кто-нибудь подскажет, и тем самым облегчит процесс , буду благодарен. Заранее спасибо
  12. Передо мной стоит задача описать процесс тестирования адаптера COM-порта (преобразование параллельного кода в последовательный) на базе платы Спартан 3е. Проблема в том, что этот демокомплект я в глаза не видел и не использовал. Если есть люди, работавшие с этим комплектом, прошу помощи
×
×
  • Create New...