Top > 日記 > 2017-10-14

ID-31をCI-Vで制御

音声でUrCALLを入力させる前に、ID-31をCI-Vで入力させてみた。
インターフェースは以下参考*1にし、プログラムはID-31 マニュアルのCI-V制御コマンド表等を見ながら
bash shellとPython(2.7)で作成した。
参考:http://www.fbnews.jp/201708/myproject/index.html

  1. 構成
    Raspberry Pi(on VirtualBox) == Interface == ID-31(CI-V)
  2. Interface
    IMG_2655.JPG
  3. Menu Code*2
    #!/bin/bash
    
    PATH=~/bin:$PATH
    export $PATH
    
    ucl31.sh "CQCQCQ"
    URCL0="CQCQCQ"
    817.py
    FREQ="438.17 MHz"
    dup_off.py
    DUP="Dup none"
    
    while :
    do
      str1=""
      clear
      echo "Current Set.: $URCL0 $FREQ $DUP"
      echo ""
      wget -q -N http://aaa.bbb.ccc.ddd/data2.txt  #自前サーバアドレス
      head -25 data2.txt | cut -c12- | sort -u | grep -v "        " | nl -w 2 -s " - " | tee list0.txt
      cat /home/pi/bin/ref1.txt >> list0.txt
      echo "-------------------------------------------"
      cnt=0
      while :
      do
        cnt=`expr $cnt + 2`
        echo $(cat ref1.txt | head -$cnt | tail -2 | awk '{print($1,$2,$3)}')
        if [ $cnt -gt 17 ]; then
          break
        fi
      done
      echo ""
      read -t 5 -p "No. of CALL: " str1
      VAL=$((str1 + 0))
      case "$str1" in
        "17" ) 817.py
               FREQ="438.17 MHz" ;;
        "60" ) 860.py
               FREQ="438.60 MHz" ;;
       "dn" ) dup_on.py
               DUP="Dup -" ;;
       "df" ) dup_off.py
               DUP="Dup none" ;;
        "pn" ) pwon.py ;;     #電源ON
        "pf" ) pwoff.py ;;    #電源OFF
        "vl" ) voll.py 7 ;;    #ボリュームLOW
        "vm" ) voll.py a ;;    #  〃  MIDL
        "vh" ) volh.py A ;;    #  〃  HIGH
        "mt" ) voll.py 2 ;;    #  〃  MUTE
      esac
      if test $VAL -lt 100 -a $VAL -gt 0  ; then
        URCL=`grep "$str1 -" list0.txt | head -1`
        MEM1="$URCL"
        URCL0=`echo "$URCL" | cut -c7-14`
        /home/pi/bin/ucl31.sh "$URCL0" &
        str1=""
        VAL=""
      fi
    done
  4. ucl31.sh(UrCALL->d31.py)
    #!/bin/bash
    
    STR1=`echo $1 | cut -c1`
    echo $STR1
    if test "$STR1" = "s"; then
    # echo "Found s"
      STR2=`echo $1 | cut -c2-8`
      python2 d31.py "$STR1" "$STR2"
    else
      python2 d31.py "" "$1"
    fi
  5. d31.py(CI-V Control)
    #!/usr/bin/python
    
    import serial
    import sys
    import time
    
    ser = serial.Serial('/dev/ttyUSB0',
                       baudrate=19200,
                       parity = serial.PARITY_NONE,
                       timeout=1)
    
    ser.close()
    ser.open()
    ser.isOpen()
    
    pm1 = sys.argv[1]
    pm2 = sys.argv[2]
    CMDGATETO = '\xFE\xFE\x84\x00\x1F\x01'
    count = 0
    while (count < 1):
    #  time.sleep(0.1)
       RPT1 = 'JJ1YEG A'
       RPT2 = 'JJ1YEG G'
       URCL = pm2
       URCL = URCL + '        '
       if pm1 == "s":
    #    print pm1
         URCL = URCL[:7]
       else:
         URCL = URCL[:8]
    
       URCL = URCL + RPT1 + RPT2
       CEND = '\xFD'
       SLS = '\x2F'
       ser.write(CMDGATETO)
       if pm1 == "s":
         ser.write(SLS.encode())
    
       URCL = URCL.replace('_', ' ')
       URCL = URCL.upper()
       print URCL
       ser.write(URCL.encode())
    #  ser.write(RPT1.encode())
    #  ser.write(RPT2.encode())
       ser.write(CEND)
       count = count + 1
    
    ser.close()
  6. sample pic
     メニュー画面(毎8秒更新)
    menu04.JPG  IMG_2650.JPGIMG_2654.JPG
                       "93"を入力して"CQCQCQ" ⇨ "REF047CL"にセットされた様子
     また、メニューの個人コールサインの番号を入力すると、UrCALLがそのコールにセットされる。
     メニューのリストは8秒毎に更新*3される。

    URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White


*1 このサイトのおかげです。感謝感謝
*2 2017-10-16更新
*3 JARL管理サーバーの「テーブル書き換え要求」一覧を参考にしている→http://log.d-star.info/usr/TrustAccessLog.html

添付ファイル: filemenu04.JPG 442件 [詳細] filemenu03.JPG 221件 [詳細] fileIMG_2655.JPG 331件 [詳細] fileIMG_2654.JPG 326件 [詳細] fileIMG_2650.JPG 365件 [詳細]

リロード   新規 下位ページ作成 凍結解除 差分 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Mon, 16 Oct 2017 23:09:50 JST (2385d)