Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 3 из 6 ПерваяПервая 123456 ПоследняяПоследняя
Показано с 21 по 30 из 54

Тема: САТ команды

  1. #21
    Доброе время, коллеги!

    Извините за надоедливость, но вопрос полностью не снят - не получается подружить рукодельную железяку с HamRadioDeluxe ... PortMon показывает, что программа "вылетает" по таймауту (это касается и RxPlus`а). Прошу помощи !!! "Догадаться" чего именно ждет и не может дождаться HRD не получается... Вся надежда на владельцев Icom'ов - выручите PortMon`овским логом работы трансивера_приемника и HRD...

    Заранее благодарен!

    73!

    Алексей АКА lode


  2. #22
    Алексей я сам делал управление приемником по CAT-V интерфейсу.
    Работали все программы кроме HRD.
    Оказалось, что интерфейс должен быть выполнен так, чтобы
    программа HRD не только принимала данные от приемника,
    но и видела все, что она сама передает.
    Тоесть все запросы на приемник должны возвращаться на вход RX COM порта.
    Лучше всего это сделать аппаратно, чтобы не заморачиваться с
    передачей принятых байт програмно.
    После выполнения этого условия все проблемы с HRD исчезли.
    Владимир.

  3. #23
    Владимир, огромное спасибо!

    73!

    Алексей АКА lode

  4. #24
    Добрый день коллеги! Вытащил из истории старую тему, прошу помощи. Есть синтезатор и есть желание заставить его работать по САТ. Написал тестовую программку, подключил плату через СОМ-порт к компьютеру.
    С терминала посылаю команду, ну скажем ID; синтезатор отвечает ID019; (это я подсмотрел на сайте Тарасова, протокол Кенвуд, а ответ применительно к TS-2000).
    На команду IF; синтез отвечает IF00012345678; Правильно это или нет, не знаю.
    С программой от UR5EQF и Omnirig девайс не хочет работать. Несколько секунд выдает сообщение ON Line, затем появляется Rig not responding. Отсюда несколько вопросов:
    - для того чтобы Omnirig опознал устройство, есть какая то команда и что должен ответить синтезатор?
    - если есть, что за команда, или же на все запросы синтезатор должен давать адекватные ответы (имею ввиду команды, которые ждут ответа)?
    - кроме RTX и DTX надо ли задействовать еще выводы СОМ-порта? Иногда встречал информацию, что низкий уровень на соответствующих выводах порта указывает что трансивер (или компьютер) не готовы к приему данных.
    Или совет, где прочитать информацию..

  5. #25
    Цитата Сообщение от Владимир_К Посмотреть сообщение
    Несколько секунд выдает сообщение ON Line, затем появляется Rig not responding.
    а Вы посмотрите монитором порта что они там друг другу говорят


    Цитата Сообщение от Владимир_К Посмотреть сообщение
    На команду IF; синтез отвечает IF00012345678; Правильно это или нет, не знаю.
    нет не правильно, поэтому видимо и происходит Rig not responding.

    вот формат ответа на IF
    Нажмите на изображение для увеличения. 

Название:	2000.png 
Просмотров:	132 
Размер:	48.6 Кб 
ID:	266142

    Цитата Сообщение от Владимир_К Посмотреть сообщение
    - кроме RTX и DTX надо ли задействовать еще выводы СОМ-порта?
    нет
    раз он на ID отвечает, значит обмен есть

    Цитата Сообщение от Владимир_К Посмотреть сообщение
    Или совет, где прочитать информацию..
    почитайте формат команд в конце инструкции к TS-2000

  6. #26
    Цитата Сообщение от UT0UM Посмотреть сообщение
    раз он на ID отвечает, значит обмен есть
    Нет, видимо неточно обрисовал ситуацию - это терминал принимает ответ от синтезатора на команду полученную также от терминала. Это я лишь показал, что я правильно работаю с UART, принимаю и передаю символы, строки... Это я тупо включил в тестовую программу, что если получена команда ID;, то надо ответить ID019, если получена команда IF;, надо ответить IF00012345678;, где цифры 1....8 - это частота. Но я не уверен, что это так и пока не могу найти ответ. Мозги видимо уже усыхают.
    А программа Omnirig, в отличие от терминала может хочет что-то другое. Терминалу то до лампочки, что ему передали, то и принял и, на экран выдал..
    Цитата Сообщение от UT0UM Посмотреть сообщение
    нет не правильно, поэтому видимо и происходит Rig not responding.
    Да вроде и так я тоже пробовал... Но сейчас уточню, возможно что упустил (вроде 38 байтов выдавал)... Да нет, так и отвечал.. Тоже "not responding".

  7. #27
    Цитата Сообщение от Владимир_К Посмотреть сообщение
    Да нет, так и отвечал.. Тоже "not responding".
    ну тогда смотрите монитором порта что там спрашивает Омнириг и что ему отвечает синтезатор
    если не отвечает, то почему

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

    а вообще, для начала, я бы омнириг не юзал
    я бы взял лог, который без омнириг работает
    выставил бы там жестко тс-2000 и добился бы устойчивой работы синтезатора с эти логом
    а потом бы уже через Омнириг запускал

  8. #28
    Вот код, может оно так понятней будет.. В общем пытался послать две команды ID; и IF (ответ на команду IF; я там "укоротил", первое время писал все 38 байт, потом урезал, так как в другом месте увидел пример другого ответа). Может в коде я что-то не то написал..


    #include <avr/io.h> //Библиотека ввода/вывода
    #include <avr/interrupt.h> //Библиотека прерываний
    #include <stdlib.h> //Для atoi()


    //#define bauddivider (103)
    //#define F_CPU 16000000L


    volatile char Str[]="FA00012345678;" ;
    volatile char StrIF[]="IF00012345678;" ;
    volatile char i, k;
    volatile char b;
    //unsigned Frequensy;
    char Str2[]="FA";
    volatile unsigned long Frequensy_1, Frequensy_2 ;
    unsigned long Num=0;
    //char Str3[]="FB";
    //char Str4[]="FB";
    //char Str5[]="ID";
    //char Str6[]="IF";


    int comparelimit=2;

    /************** Прототипы подпрограмм ********/
    void USART_Transmit(char) ;
    void USART_Init( unsigned char);
    void str_uart_send(char *);

    /*********** Подпрограмма обработки прерывания ********/
    ISR(USART_RX_vect)
    {


    b = UDR0;


    /***** Выполняем обработку принятого байта ****************/


    if (b==';')
    {
    k=1;
    //i=0;
    return;
    }
    else
    {


    Str[i]=b;
    i++;
    }
    }
    /**************** Инициализация модуля USART *******************/

    void USART_Init( unsigned char ubrr) //Инициализация модуля USART
    {

    UBRR0H = (unsigned char)(ubrr>>8); //Устанавливаем скорость передачи
    UBRR0L = (unsigned char)ubrr;


    /* Разрешаем прием и передачу по USART */


    UCSR0B=(1<<RXEN0)|( 1<<TXEN0); //Настраиваем регистр - разрешаем прием и передачу
    UCSR0B |= (1<<RXCIE0); //Разрешаем прерывание при заполнении регистра приема.

    UCSR0B=(1<<RXEN0)|(1 <<TXEN0)|(1<<RXCIE0) ;
    /* Устанавливаем формат данных 8 бит данных, 2 стоп бита */


    //UCSR0C=0x86; // Инициализация именно для ATmega328p
    UCSR0C = (1<<UCSZ01)|(1<<UCSZ 00);


    }
    /************* Функция передачи символа *******************/
    void USART_Transmit(char data) //Функция отправки данных
    {
    while ( !(UCSR0A & (1<<UDRE0)) ); //Ожидание опустошения буфера приема
    UDR0 = data; //Начало передачи данных. Для передачи "кладем" символ в регистр данных UART.
    }


    /******************** ** Функция передачи строки по USART ******************** *******/
    void str_uart_send(char *string)
    {
    while(*string != '\0')
    {
    USART_Transmit(*stri ng);
    string++;
    }
    }


    /************* Главная функция *******************/

    int main(void)//главная программа
    {


    USART_Init (103); //Вызываем функцию настройки UART, где -103 параметр скорости передачи (9600). Пример расчета в даташит.


    sei(); //разрешаем глобально прерывания

    while(1) //вечный цикл
    {
    if (k==1)


    {

    int result_4=strncmp("IF ", Str, comparelimit); //Проверяем первые два элемента строки Str, есть ли там "IF"
    // если есть, значит это команда, соответствующая "IF".


    if (result_4==0)
    {

    str_uart_send (StrIF);
    k=0;
    i=0;
    }

    int result=strncmp(Str, "ID", comparelimit); //Проверяем первые два элемента строки Str, есть ли там "ID"
    // если есть, значит это команда, соответствующая "ID".
    if (result==0)
    {
    str_uart_send ("ID019;"); // Отвечаем, "ID019;"
    k=0;
    i=0;
    }
    int result_1=strncmp(Str , "FA", comparelimit); //Проверяем первые два элемента строки Str, есть ли там "FA"
    // если есть, значит это команда, соответствующая "FA".


    if (result_1==0)

    {Frequensy_1 = atol(Str+5); //Из строки выделяем число типа unsigned long (заданную пор САТ частоту)
    //Присваиваем это значение переменной Frequensy_1
    k=0;
    i=0;
    }
    int result_2=strncmp(Str , "FB", comparelimit); //Проверяем первые два элемента строки Str, есть ли там "FB"
    // если есть, значит это команда, соответствующая "FB".
    if (result_2==0)
    {
    Frequensy_2 = atol(Str+5); //Из строки выделяем число типа unsigned long (заданную пор САТ частоту)
    k=0;
    i=0; //Присваиваем это значение переменной Frequensy_2
    }
    }
    }
    }

  9. #29
    Цитата Сообщение от Владимир_К Посмотреть сообщение
    Вот код
    да посмотрите Вы обмен
    все сразу станет ясно


  10. #30
    Аватар для Genadi Zawidowski
    Регистрация
    22.07.2004
    Адрес
    Санкт-Петербург
    Сообщений
    11,100
    Записей в дневнике
    20
    Позывной
    UA1ARN
    Если что, вот документ где расписано, что должна IF возвращать. Я делал в своем проекте так - использовал кенвудовскую программу ARCP-590 (она работает без омнириг). Когда заработало без отваливаний с ней, все остальное работает как надо.
    И кусок кода, где можете посмотреть как оно устроено.
    Вложения Вложения
    ... Я там глубину сам промерял!

Страница 3 из 6 ПерваяПервая 123456 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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