ruby ファイルに出力 [raspberrypi]
便利な時代になったなあと実感する今日この頃
googleで”ruby ファイルに出力”で検索すると親切丁寧に教えてくれる
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
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の内容終わり::::::::::::::::
コメント 0