***ID-31をCI-Vで制御 [#y34482d8]
音声でUrCALLを入力させる前に、ID-31をCI-Vで入力させてみた。
インターフェースは以下参考((このサイトのおかげです。感謝感謝))にし、プログラムはID-31 マニュアルのCI-V制御コマンド表等を見ながら
bash shellとPython(2.7)で作成した。
参考:http://www.fbnews.jp/201708/myproject/index.html
+構成
Raspberry Pi(on VirtualBox) == Interface == ID-31(CI-V)
+Interface
&ref(IMG_2655.JPG,,40%);
+Menu Code((2017-10-16更新))
 #!/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://192.168.50.19/data2.txt
   head -25 data2.txt | cut -c12- | sort -u | grep -v "        " | nl -w 3 -s " - " | tee list0.txt
   cat /home/pi/bin/ref1.txt >> list0.txt
   echo "-------------------------------------------"
   cat /home/pi/bin/ref1.txt
   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" ;;
   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

+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
+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()
+sample pic
 メニュー画面(毎8秒更新)
&ref(menu03.JPG,,43%);  &ref(IMG_2650.JPG,,30%); ⇨ &ref(IMG_2654.JPG,,30%);
            "93"を入力して"CQCQCQ" ⇨ "REF047CL"にセットされた様子
 もちろんメニューの各コールサインを1つ入力しても、そのコールがセットされる。
 メニューのリストは8秒毎に更新((JARL管理サーバーの「テーブル書き換え要求」一覧を参考にしている→http://log.d-star.info/usr/TrustAccessLog.html))される。
#clear
#comment
#navi(日記)


リロード   新規 下位ページ作成 凍結解除 差分 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS