SSブログ
raspberrypi ブログトップ
前の10件 | -

ruby ファイルに出力 [raspberrypi]

便利な時代になったなあと実感する今日この頃
googleで”ruby ファイルに出力”で検索すると親切丁寧に教えてくれる

:::::::::::::::::::::::::text_write.rbの内容::::::::::::::::
filename = "20201103.adi"                    #ファイル名固定
pattern = Regexp.new("QSO_DATE")
file=open(filename)
file2=File.open('cqrtohamlog.csv',"w")       # "w":ファイル無いとき新規作成、存 在するとき内容を消去してから書き直す。
while text=file.gets do
    if pattern =~ text
        # adifファイルの先頭から41文字にはコールサインの文字数が書かれている42文字目が>であれば1桁である
        if text[42,1] == ">"           #文字数1桁
          callnum = text[41,1].to_i
          callsign = text[43,callnum] + ","   #csvデータにするために,区切りにするため
          file2.print(callsign)               #
        else                            #文字数2桁
          callnum = text[41,2].to_i
          callsign = text[44,callnum] + ","
          file2.print(callsign)
        end
    end
end
file2.print("\n")
file.close
file2.close
:::::::::::::::::::::::::text_write.rbの内容終わり::::::::::::::::
これを実行すると20201103.adiを読み込んでコールサインだけをcqrtohamlog.csvに書き出してくれる。
以下を実行すると20201103.adiを読み込んでhamlogで読み込めるcsvデータを作成できる。ただし問題点がある。
:::::::::::::::::::::::::cqrtohamlog.rbの内容::::::::::::::::
filename = "20201103a.adi"                    #ファイル名固定
# filename = ARGV[0]                         #ファイルを引数で指定する場合
pattern = Regexp.new("QSO_DATE")
file=open(filename)
file2=File.open('cqrtohamlog.csv',"w")       # "w":ファイル無いとき新規作成、存 在するとき消去してから書き直す。
while text=file.gets do                      #ファイルから1行ずつ読み込む
    if pattern =~ text                       #読み込んだデータにQSO_DATEがあるか?
                                             #else文が無いのでQSO_DATEが無い行は破棄される
      #
      # adifファイルの先頭から41文字にはコールサインの文字数が書かれている42文字目が>であれば1桁である
      #:::::ここから "CallSign"
      if text[42,1] == ">"                  #42文字目が>であれば文字数1桁
        #print text[41,1] + "\n"
        callnum = text[41,1].to_i
        #print text[43,callnum] + "\n"
        callsign = text[43,callnum] + ","
        file2.print(callsign)
      else                                  #42文字目が数字であれば文字数2桁である
        #print text[41,2] + "\n"
        callnum = text[41,2].to_i
        #print text[44,callnum] + "\n"
        callsign = text[44,callnum] + ","
        file2.print(callsign)
      end
      #:::::ここまで"CallSign"
      #:::::ここからdate
      # 先頭から14文字めには年数下2桁, 16文字めには 月2桁 18文字めには 日にち 2桁
      #print text[14,2] + "/" + text[16,2] + + "/" + text[18,2] + "," + "\n"
      comdate = text[14,2] + "/" + text[16,2] + + "/" + text[18,2] + ","
      file2.print(comdate)
      # ::::ここまでdate
      #:::::ここからtime
      #print text[31,2] +  ":" + text[33,2] + "," + "\n" #時間表示
      file2.print(text[31,2] +  ":" + text[33,2] + ",")
      # ::::ここまでtime
      #:::::
      # 〔His〕は、相手に送ったレポートを入れます
      # :::::ここから RST_SENTの文字数
      #p "RST_SENT"
      # text.index("RST_SENT:") 文字列RST_SENTを検索してその先頭からの位置を返す
      #p text.index("RST_SENT:")              # RST_SENT:が記載してある先頭から の位置
      rstrclmn = text.index("RST_SENT:") + 9
      #p text[rstrclmn,1]
      rstrnum = text[rstrclmn,1]             # RST_SENTの文字数
      #p rstrnum
      #p text[rstrclmn+2,rstrnum.to_i]
      rsts = text[rstrclmn+2,rstrnum.to_i]   # RST_SENT
      #p rsts
      file2.print(rsts + "," )
      # :::::ここまで
      # 〔My〕は、相手からいただいたレポートを入れます
      # :::::ここから RST_RCVDの文字数
      #p "RST_RCVD"
      #p text.index("RST_RCVD:")              # RST_RCVD:が記載してある先頭から の位置
      rstrclmn = text.index("RST_RCVD:") + 9
      #p text[rstrclmn,1]
      rstrnum = text[rstrclmn,1]             # RST_RCVDの文字数
      #p rstrnum
      #p text[rstrclmn+2,rstrnum.to_i]
      rstr = text[rstrclmn+2,rstrnum.to_i]   # RST_RCVD
      #p rstr
      file2.print(rstr + "," )
      # :::::ここまで
      # :::::ここから freqの文字数
      #p "周波数"
      #p text.index("FREQ:")                  # freqが記載してある先頭からの位置
      freqclmn = text.index("FREQ:") + 5
      #p text[freqclmn,1]
      freqnum = text[freqclmn,1]             # freqの文字数
      #p freqnum
      #p text[freqclmn+2,freqnum.to_i]
      freq = text[freqclmn+2,freqnum.to_i]   # freq
      #p freq
      file2.print(freq + "," )
      # :::::ここまで
      # :::::ここから modeの文字数
      #p "MODE"
      #p text.index("MODE:")                  # modeが記載してある先頭からの位置
      modeclmn = text.index("MODE:") + 5
      #p text[modeclmn,1]
      modenum = text[modeclmn,1]             # modeの文字数
      #p modenum
      #p text[modeclmn+2,modenum.to_i]
      mode = text[modeclmn+2,modenum.to_i]   # mode種別 CW SSB FT8等
      #p mode
      file2.print(mode + "," )
# :::::ここまで
# :::::ここから code,GL,QSL,Name,QTH,Rem1,Rem2,は空欄とする DC12には0を入れる?
      file2.print(",,,,,,,0\n")
# :::::ここまで
    end
end
file.close
file2.close
:::::::::::::::::::::::::cqrtohamlog.rbの内容終わり::::::::::::::::

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

ruby ファイル読み込み [raspberrypi]

20201103.adiというファイルを読み込みモニタに表示するプログラム

読み込むファイルの内容

2020-11-11.png

pi@raspberrypi3:~/src $ cat 20201103.adi
ADIF export from CQRLOG for Linux version 2.4.0 (001)
Copyright (C) 2020 by Petr, OK7AN and Martin, OK1RR
Internet: http://www.cqrlog.com

<ADIF_VER:5>2.2.1
<PROGRAMID:6>CQRLOG
<PROGRAMVERSION:11>2.4.0 (001)
<EOH>
<QSO_DATE:8>20201103<TIME_ON:4>0555<CALL:10>JG1XDE/777<MODE:2>CW<FREQ:5>7.02
<BAND:3>40M<RST_SENT:3>599<RST_RCVD:3>598
<QSO_DATE:8>20201104<TIME_ON:4>0655<CALL:6>JG1XDE<MODE:2>CW<FREQ:5>7.025<BAND:3>40M<RST_SENT:3>499<RST_RCVD:3>598
<EOR>
pi@raspberrypi3:~/src $


ファイルを読み込み表示するrubyプログラム
gets_text.rb内容
:::::::::::::::::::::::::::
filename=ARGV[0]
file=open(filename)
while text=file.gets do
    print text
end
file.close
:::::::::::::::::::::::::::
gets_text.rbを実行する
2020-11-11 (2).png
ファイル内容を表示できた

ファイルを読み込み特定の文字列(この場合QSO_DATE)がある行のみを表示するrubyプログラム
gets_text3.rb
filename=ARGV[0]
pattern=Regexp.new("QSO_DATE")
file=open(filename)
while text=file.gets do
    if pattern =~ text
        print text
    end    
end
file.close
::::::::::::::::::
gets_text3.rbを実行する
2020-11-11 (1).png
10行あった元データから2行のみ表示できた
固定長のデータでできているので先頭からの場所が決まっているデータを取り出すプログラム
pi@raspberrypi3:~/src $ cat gets_callsign.rb
filename="20201103.adi"
pattern=Regexp.new("QSO_DATE")
file=open(filename)
while text=file.gets do
    if pattern =~ text
        # adifファイルの先頭から41文字にはコールサインの文字数が書かれている42文字目が>であれば1桁である
        if text[42,1] == ">"           #文字数1桁
          print text[41,1] + "\n"
          callnum = text[41,1].to_i
          print text[43,callnum] + "\n"
        else
          print text[41,2] + "\n"
          callnum = text[41,2].to_i
          print text[44,callnum] + "\n"
        end
    end
end
file.closepi@raspberrypi3:~/src $
2020-11-11 (3).png
callsignだけ取り出すことができた。ちなみにcallsignの上の数字は文字の数、確認のためで最終的にはいらない
コールサインの文字数が変化するので周波数とかモードは先頭から何文字目と決め打ちできないので検索してからデータを取り出すプログラム(読み込むファイル名決め打ちにした)
pi@raspberrypi3:~/src $ cat gets_mode.rb
filename="20201103.adi"
pattern=Regexp.new("QSO_DATE")
file=open(filename)
while text=file.gets do
    if pattern =~ text
                p text.index("MODE:")                  # mode:がかかれている位置           
                modeclmn = text.index("MODE:") + 5     # modeの文字数がががれている位置
                modenum = text[modeclmn,1]             # modeの文字数
                mode = text[modeclmn+2,modenum.to_i]   # mode種別 CW SSB FT8等
                print mode + "\n"
    end
end
file.closepi@raspberrypi3:~/src $
実行してみる
2020-11-11 (4).png
CWとかSSBとかmodeも取り出せた。あとはこれらを組み合わせればcqrlogからadifファイルをエクスポートしてこのプログラムで整形してcsvファイルを作ればhamlogに読み込ませることができそうだ。


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

rubyインストール、Visual Studio Codeインストール [raspberrypi]

raspberypiのパイはパイソンのパイだからpythonで作れと言われてもpython使ったことないし・・・
rubyをインストールした。

pi@raspberrypi3:~ $ sudo apt install ruby

pi@raspberrypi3:~ $ ruby -v
ruby 2.5.5p157 (2019-03-15 revision 67260) [arm-linux-gnueabihf]
pi@raspberrypi3:~
nanoで作るのもかったるいのでcodeをインストールします。
まず、https://azure.microsoft.com/ja-jp/products/visual-studio-code/
ここからcode_1.50.1-1602600660_armhf.debをダウンロード

pi@raspberrypi3:~/Downloads $ sudo dpkg -i code_1.50.1-1602600660_armhf.deb
pi@raspberrypi3:~/Downloads $
Visual Studio Code を起動(初期状態英語)
拡張機能をインストールしたいので、 「View (表示)」→ 「Extensions (拡張機能)」と操作する
検索窓で 「japanese」と入れると、 「Japanese Language Pack for Visual Studio Code」が表示されるので、 「Install (インストール)」をクリック
Visual Studio Code を再起動すれば日本語表示になっているはず。
初期状態の配色は老眼のせいか私には読みにくいのでテーマ変更
画面左下の歯車マーク > 配色テーマ
2020-11-10.png

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

chromiumバージョン: 86.0.4240.111 [raspberrypi]

クロミウムブラウザーを立ち上げたままにすると古いから新しいのにしろとか更新に失敗しましたとかうるさいので新しいのを入れることにした。(どうせならarmhf版をインストールしろよ、amd版入れようとしても入るわけない)。
まずはsnapdをインストール(最初snapをインストールして何もできず焦った)

pi@raspberrypi3:~ $ sudo apt install snapd
pi@raspberrypi3:~ $ sudo reboot
ここによると$ snap install hello-worldしろと書いてある。chromiumインストールするのに必要あるかどうかわからないけど一応やった。

pi@raspberrypi3:~ $ sudo snap install hello-world
10分以上かかったかな

pi@raspberrypi3:~ $ hello-world
ERROR: ld.so: object '/usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so' from /etc/ld.so.preload cannot be preloaded (cannot open shared object file): ignored.
Hello World!
pi@raspberrypi3:~ $
確かにhello-worldとキーインすると(ERROR表示するけど)Hello World!表示するからsnapd動作しているのだけどそれが・・・インストールすることなかったのかなあ
ともかくchromiumをインストール

pi@raspberrypi3:~ $ sudo snap install chromium

pi@raspberrypi3:~ $ sudo snap list
Name               Version          Rev    Tracking       Publisher   Notes
chromium           86.0.4240.111    1368   latest/stable  canonical?  -
core               16-2.47.1        10187  latest/stable  canonical?  core
core18             20200929         1937   latest/stable  canonical?  base
gtk-common-themes  0.1-36-gc75f853  1506   latest/stable  canonical?  -
hello-world        6.4              29     latest/stable  canonical?  -
pi@raspberrypi3:~ $
パソコンのバージョンと同じになった。
同じ名前のパッケージをapt install chromiumとsnap install chromium両方するとaptでインストールしたほうが立ち上がるので住み分ける場合は
$ sudo snap alias chromium chromium86とすると、chromium86でsnap版のchromiumを起動することができる。 snapの使い方はここに書いてある
私の場合は使い分ける必要はないので
$ sudo apt remove chromiumしてからデスクトップの設定→Main Menu Editor
Main Menu Editorの画面でインターネットを右クリックすると下の画面になる。
2020-10-29-133759_675x530_scrot.png2020-10-29-133354_457x200_scrot.png
Web Browserを右クリックして出てくるボックスの中のプロパティをクリックすると下の画面が出るのでCommand:に/snap/bin/chromiumとキーインするとで市区トップの地球マーククリックでブラウザーが立ち上がるようになる。
2020-10-29-133354_457x200_scrot.png



nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

raspberrypiで市販DVDを見る(5.1chオーディオも) [raspberrypi]

DVDプレーヤーが壊れてしまったのでraspberrypiでDVDを見ることができるようにした。
使用したハード
USB DVD Drive(中華製ノーブランド)
S/PDIF入力を持つ5.1chアンプ(17年前に発売されたYAMAHA製)
USB DDC S/PDIF出力があるaitendo アルミケース付きUSB DACオーディオボード [PCM2704CS]
なお、reiyin DA-03(+USB変換アダプター)も作動確認しました。
また、同じ チップPCM2704を使用している秋月のUSBオーディオDAコンバーターキットも使用できるはずです。

ソフト
raspiOSに初めから入っているVLCメディアプレーヤーでもDVDを見ることはできますが5.1ch出力の方法がわからなかったのでkodiをインストールした。
pi@raspberrypi4:~ $ sudo apt install kodi
pi@raspberrypi4:~ $ sudo apt install libdvd-pkg
pi@raspberrypi4:~ $ sudo dpkg-reconfigure libdvd-pkg


USBドライブはマウントする作業は不要でした。kodiの左側のメニューからdiskを選択すれば映画見ることができます。
DVDの5.1chを聴くにはkodi - setting - System - AudioとたどってAodio Output DeviceとAudio Passthroughの2か所3項目の設定で聞けます。

Aodio Output Deviceをクリックして出てくる選択肢の中から S/PDIFのカードを選択する
aitendoのUSB DACの場合はAodio Output Device Alsa:USB Audio DAC,S/PDIFであった。
Audio Passthroughはボタンをクリックしてオンにする。
Passthrough deviceは多分Aodio Output Deviceで選択したものが表示されていると思うが異なっているときは同じものにする
追記
19円でアルミケースがついてくる
USB DACオーディオボード [PCM2704M3] ¥1980


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

mpdインストールではまったこと [raspberrypi]

mpdをインストールすること自体は別に問題はなく
$ sudo apt install mpd とコマンド打つだけでインストールできました。

また設定もhttps://tech.nosuz.jp/2017/02/install-mpd/を参考に
/etc/mpd.confを修正すればraspberry pi4にある音楽ファイルは聞くことができました。


しかしNASにあるファイルを演奏することができずmountやらlinkやらいろいろためして時間ばかり費やしてしまった。
結局mountのコマンドの知識がなくオプションの指定ミスであった
$ sudo mount -t cifs //192.168.1.233/contents/music /mnt/mp3ではだめで
$ sudo mount -t cifs -o vers=1.0 //192.168.1.233/contents/music /mnt/mp3でうまくいった


参考windowsのパワーシェルからGet-SmbConnectionと入力するとsmbのバージョンがわかる。
Dialectがsmbのバージョン
ServerName     ShareName      UserName   Credential  Dialect   NumOpens
----------          ---------           --------        ----------   -------    --------
EPSON40611C  MEMORYCARD ICE4I57\Et  ICE4I57\Et  1.5       1
EPSON40611C  USBSTORAGE  ICE4I57\Et  ICE4I57\Et  1.5       1
HVL-AVBA17A8 disk1              ICE4I57\Et  ICE4I57\Et   1.5      1
 



nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

スマホでササッ動画中継ラジコンカーの製作 [raspberrypi]

スマホでササッ動画中継ラジコンカーの製作したときに、CQ出版社の記事どおりではないこと抜粋
1.記事には無線LANドライバーをインストールするように書かれているがraspbianでは不要です。
2.MJPG-streamer の起動ですが記事に書かれた方法では起動できずUSBカメラがUVCに対応していないのかと一瞬あせりました。あちこちググッて答えが見つかりました。
"/usr/local/lib/input_uvc.so -f 10 -r 320x240 -d /dev/video0 -y" 記事には-yがありません。-yが無いと動画が出ませんでした。
3.”図3 モータドライブ基板の回路 ”の書き方おかしいです。
raspberrypiへの行き先ボックスにpin4, pin17,pin21,pin22と書いてあればGPIOピンの4,17,21,22に繋ぎませんか?モータが回らず悩みました。

スクリプト見たら
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.OUT)
GPIO.setup(17, GPIO.OUT)
GPIO.setup(21, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)と書いてあります。
回路図に描いてあるのは信号名なのねハード回路は回路図見て接続できるように書いてくれなきゃ困るよ
4.間違えて繋いだ所為かどうかわからないけどGPIO21が動いてくれないので

GPIO.setmode( GPIO.BCM )
GPIO.setup(4, GPIO.OUT)
GPIO.setup(17, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)に変更した


iBUFFALO 200万画素Webカメラ Wマイクモデル ブラック BSW20KM12BK

iBUFFALO 200万画素Webカメラ Wマイクモデル ブラック BSW20KM12BK

  • 出版社/メーカー: バッファロー
  • メディア: Personal Computers

 


wifiドングル設置(スマホでササッツ動画中継ラジコンカーの製作) [raspberrypi]

CQ出版社のインターフェーススペシャル「ラズベリーパイでI/O」に乗っていた「スマホでササッツ動画中継ラジコンカー」を作成しようと思い立ちまずはUSB Wireless LAN Adapterを購入しました。

お手軽 ARMコンピュータ ラズベリー・パイでI/O: USB/イーサ/シリアル/HDMI…全部入り定番ボードでハード制御にトライ! (インターフェースSPECIAL)
最初は認識せず色々設定変更していたらいつの間にか接続していてた
/etc/wpa_supplicant/wpa_supplicant.confを作成することと
/etc/network/interfacesにwlanの項目を付け加えてることだけだ
 
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
 
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
なお、 /etc/network/interfacesには変な項目
わけもわからずに 
scan_ssid=0
proto=WPA
pairwise=CCMP
group=CCMPなどは付け加えないほうがいいようだ
 


タグ:raspberry

homeでのbluetooth確認実験(+asteriskインストール手順メモ) [raspberrypi]

officeでのbleutoothがうまく行かなくなったので家のraspberrypiで確認しようとしたらmobileコマンドがなくなっている。raspberrypiでのasteriskは今まで安定していたのに原因がわからない。
めんどくさいので再インストールしてみることにした。
http://downloads.asterisk.org/pub/telephony/asterisk/releases/からasterisk-11.12.1をインストール
makeすると結構時間がかかる。(cubieboardとのcpuの差を実感する) 
# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-11.12.1.tar.gz
# tar zxvf asterisk-11.12.1.tar.gz
# cd  /asterisk-11.12.1.tar.gz
# patch -p0 < app_voicemail.c.121107-01.patch
# patch -p0 < say.c.121107-01.patch
# ./contrib/scripts/get_mp3_source.sh
uint8_t rfcomm_channel = 1addons# pico chan_mobile.c
uint8_tを検索して
uint8_t rfcomm_channel = 1 をuint8_t rfcomm_channel = 0に変更
root@raspberrypi:/usr/local/src/asterisk-11.12.1#./configure
# make memuselect (chanmobileを有効にする)
# meke 
# make install

えーー
やはりmobileコマンドが無いどうしたのだろう・・・・

 usbにbtのドングルが挿してない。そういえば家では携帯でasteriskにつなぐ必要は無いから取り外していた。
 BTアダプタ差し込んでCLIで?したらmobileが出てきた

raspberrypi*CLI>
!              acl            agent          agi            aoc
calendar       cc             cdr            cel            channel
cli            confbridge     config         core           data
database       devstate       dialplan       dnsmgr         dundi
event          fax            features       file           group
hangup         help           http           iax2           indication
keys           local          logger         manager        minivm
mixmonitor     mobile         module         moh            no
originate      parkedcalls    phoneprov      presencestate  pri
queue          realtime       reload         rtcp           rtp
say            sip            stun           timing         udptl
ulimit         unistim        voicemail
raspberrypi*CLI
あーあ もっと早く気がつけばインストールしなおす必要なかったのに 無駄な時間を費やした。

 

 


postfix メモ [raspberrypi]

 

メモ
/usr/spool/postfix/deferrd
# postcat -q キューID
# postsuper -d  キューID
# postqueue -p

 


前の10件 | - raspberrypi ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。