思案中…arduinoでCT-1000のデータを受信する手順
- 2017/10/23
- 23:50
現在、思案中の案件について、書いてみます。
セイコーのスポーツプリンタCT-1000のデータを少し離れた部屋で受信する方法について。
水泳記録会などを行う際の計時処理、そしてリザルト処理をいくらかでも簡便化する方法を少しずつ考えているところです。
当初は、セイコーのスポーツプリンタ CT-1000だけでの検討をしていました。
セイコーの水泳リザルトシステムとのデータ連携は難しいと、判断。
その後、近隣の水泳協会より、セイコーのCT-916を記録会時に借用。
但し、CT-1000との連携は無し。
フィニッシュ地点が変わる際の機器移動を無くしただけ。
そこで今回は、スタート信号のシンクロケーブルSY-456を発注し、ラップも全てスポーツプリンタで計測できる体制を、と考えた。
ただ、ここでもう一つ手間を省けるものがある。
それは、タイムを記録した印字物の運搬。
今までも人の手で運んでいた。
フィニッシュタイムは1枚、ラップタイムは諸事情によりストップウオッチ計測のためレーンの数だけ枚数が出てくる。
それを手入力でリザルトシステムSCMv5.0へ入力していた。
全員がフィニッシュしてから用紙が届くまで、数分。
フィニッシュタイムだけの入力ならば問題ないが、ラップタイムまで入力するとなるとこれでは迅速な処理ができない。
私一人でなんとか処理をしていたが、新たな人が加勢しても処理分担を考えると必ずどちらかの手が空いてしまうのも止むなしとしなければならない。
保存用のデータベース(Access2.0ベース)をネットワーク共有し複数台で入力する方法もあるかもしれないが、複数レースを1レースに併合して行うとなると、計測ベースで1レース単位ずつ1PCで処理しなければならない制約も出てくる。
(基本、奇数レースを私、偶数レースを新たな人、といった感じ。)
PTシリーズの機器などを経由しないとSCMv5.0での記録取り込みができないと個人的に考えているほか、それがクリアされたとしても、この併合レース自体がSCMv5.0でのデータ半自動入力を諦めた原因の一つにもなっています。
Arduinoを2台用意し、1台の受信専用機器でリセット信号を受け取ったら、もう一台のArduinoに自動送信する方法も考えましたが、受信側のArduinoで併合レースをそれぞれのレースに振り分けるには、やはりデータが足りない。
場合によったら、RS232Cを2ルート組み込んだパソコンでタイムの振り分けなどを行った方が効率的。
しかし、画面設計までプログラミングするとなると、完全に時間が不足する。
Excelでのデータ受信も考えたが、新しいレースでシートを分けるにしても、閲覧中にデータ受信をどうやって並行処理させたら良いのか悩む。
リセット信号が入ったら、自動印刷する程度ならできると思ったが、併合レースがネックになる。
それならば、CT-1000などについている通信ポートから送信されるデータをArduinoで受信し、自動的に印字するシステムを構築すれば、運んでくるまでの時間で少しでも入力が進んで効率化できる。
Excelでセルごとの処理を考えたことがない分だけ、Excel処理を諦めざるを得ない。
併合レースもそのまま印刷するならば、それでいいじゃないかということで現在Arduino版を思案中、という訳です。
CT-1000はRS232C、CT-916はRS422である点、そして出力フォーマットは22バイト固定長。
RS422をRS232Cに変換するものは買える。
RS232Cの通信を有線LANに変換するもの(その逆も)も買える。
(無線LANは湿度や水滴に左右されるようですし、スタート信号シンクロケーブルと同時にLANケーブルを敷設できるという考え。)
そして、ワンボードマイコンとも言えるArduinoであれば、C++言語であり、C言語プログラミングをかじったことのある私には若干向いている。
そういう流れで、Arduinoによる信号受信&印字システムが構築できるのではないか、ということなのです。
ちなみに、Arduinoにサーマルプリンタを接続して印刷することも可能な(プリンタの)機種があるらしい。
印刷制御を個別に組む必要もあるらしいが、受信データを1文字ずつ処理させながらであれば、制御も難しくないだろう。
実際に完成に至るかは、まだまだ未知数。
2台のスポーツプリンタから同時に受信させての制御まではプログラミングが難しいので、単体接続で作ってみようかと思う。
電源の確保や、通信制御などのプログラミングも未知数。
フローチャートもまだまだ改善しなければならない。
どこまでやれるかはわからないが、今時点での構想を(汚い字ですが)とりあえずアップしてみる。


何れにしても、受信データのベタ打ち、ベタ印字ならば、このフローチャートでも対応できると思う。
ただそれだと、ラップとの区別とか、誤っての連続グリップ押しなどをどう区別させるか(受信エラーを含めた、フラグを印字させる手立て)が問題になってくる。
1文字ずつの印字ではなくメモリに記憶させ、03H,02H受信時に判断して印字データを生成するしかないが、万一、RS232Cの通信制御が上手くいかない(データ送信の一時ストップ、wait処理ができない場合)際には、データ欠損になってしまう。
CT-1000のマニュアルを見ると、なんとなくwait処理が出来なさそうな不安を覚える。
プリンタへのデータ送信や、印字データの加工に時間がかかっても問題になる。
加工を2分割などするには、さらなるフラグ処理を行いながらデータ受信を処理させる必要もある。
制御コード以外の処理で、何文字に1回、加工処理をさせるとか複雑になればやはり厄介になる。
カウントして何文字めでどういった処理をする、速度重視であればその程度で収めるしかない。
CT-1000は実物があるのだから、テストしてみて、トライアンドエラー。
とにかく、簡単な方法から確立させて行く。
そんなところです。
2017/10/27追記
よくよく考えると、借用を含めて機材を電子的に破損させる可能性が出て来ました。
RS232CやRS422の機材を考慮(耐電圧設計のもの)すればいいのかもしれませんが、当面は実機に接続することは考えずに設計して見たいと思います。
ただ、陸上競技のリザルトシステムにも応用できるシステムにできそうなので、改めて記事を書いてみます。
セイコーのスポーツプリンタCT-1000のデータを少し離れた部屋で受信する方法について。
水泳記録会などを行う際の計時処理、そしてリザルト処理をいくらかでも簡便化する方法を少しずつ考えているところです。
当初は、セイコーのスポーツプリンタ CT-1000だけでの検討をしていました。
セイコーの水泳リザルトシステムとのデータ連携は難しいと、判断。
その後、近隣の水泳協会より、セイコーのCT-916を記録会時に借用。
但し、CT-1000との連携は無し。
フィニッシュ地点が変わる際の機器移動を無くしただけ。
そこで今回は、スタート信号のシンクロケーブルSY-456を発注し、ラップも全てスポーツプリンタで計測できる体制を、と考えた。
ただ、ここでもう一つ手間を省けるものがある。
それは、タイムを記録した印字物の運搬。
今までも人の手で運んでいた。
フィニッシュタイムは1枚、ラップタイムは諸事情によりストップウオッチ計測のためレーンの数だけ枚数が出てくる。
それを手入力でリザルトシステムSCMv5.0へ入力していた。
全員がフィニッシュしてから用紙が届くまで、数分。
フィニッシュタイムだけの入力ならば問題ないが、ラップタイムまで入力するとなるとこれでは迅速な処理ができない。
私一人でなんとか処理をしていたが、新たな人が加勢しても処理分担を考えると必ずどちらかの手が空いてしまうのも止むなしとしなければならない。
保存用のデータベース(Access2.0ベース)をネットワーク共有し複数台で入力する方法もあるかもしれないが、複数レースを1レースに併合して行うとなると、計測ベースで1レース単位ずつ1PCで処理しなければならない制約も出てくる。
(基本、奇数レースを私、偶数レースを新たな人、といった感じ。)
PTシリーズの機器などを経由しないとSCMv5.0での記録取り込みができないと個人的に考えているほか、それがクリアされたとしても、この併合レース自体がSCMv5.0でのデータ半自動入力を諦めた原因の一つにもなっています。
Arduinoを2台用意し、1台の受信専用機器でリセット信号を受け取ったら、もう一台のArduinoに自動送信する方法も考えましたが、受信側のArduinoで併合レースをそれぞれのレースに振り分けるには、やはりデータが足りない。
場合によったら、RS232Cを2ルート組み込んだパソコンでタイムの振り分けなどを行った方が効率的。
しかし、画面設計までプログラミングするとなると、完全に時間が不足する。
Excelでのデータ受信も考えたが、新しいレースでシートを分けるにしても、閲覧中にデータ受信をどうやって並行処理させたら良いのか悩む。
リセット信号が入ったら、自動印刷する程度ならできると思ったが、併合レースがネックになる。
それならば、CT-1000などについている通信ポートから送信されるデータをArduinoで受信し、自動的に印字するシステムを構築すれば、運んでくるまでの時間で少しでも入力が進んで効率化できる。
Excelでセルごとの処理を考えたことがない分だけ、Excel処理を諦めざるを得ない。
併合レースもそのまま印刷するならば、それでいいじゃないかということで現在Arduino版を思案中、という訳です。
CT-1000はRS232C、CT-916はRS422である点、そして出力フォーマットは22バイト固定長。
RS422をRS232Cに変換するものは買える。
RS232Cの通信を有線LANに変換するもの(その逆も)も買える。
(無線LANは湿度や水滴に左右されるようですし、スタート信号シンクロケーブルと同時にLANケーブルを敷設できるという考え。)
そして、ワンボードマイコンとも言えるArduinoであれば、C++言語であり、C言語プログラミングをかじったことのある私には若干向いている。
そういう流れで、Arduinoによる信号受信&印字システムが構築できるのではないか、ということなのです。
ちなみに、Arduinoにサーマルプリンタを接続して印刷することも可能な(プリンタの)機種があるらしい。
印刷制御を個別に組む必要もあるらしいが、受信データを1文字ずつ処理させながらであれば、制御も難しくないだろう。
実際に完成に至るかは、まだまだ未知数。
2台のスポーツプリンタから同時に受信させての制御まではプログラミングが難しいので、単体接続で作ってみようかと思う。
電源の確保や、通信制御などのプログラミングも未知数。
フローチャートもまだまだ改善しなければならない。
どこまでやれるかはわからないが、今時点での構想を(汚い字ですが)とりあえずアップしてみる。


何れにしても、受信データのベタ打ち、ベタ印字ならば、このフローチャートでも対応できると思う。
ただそれだと、ラップとの区別とか、誤っての連続グリップ押しなどをどう区別させるか(受信エラーを含めた、フラグを印字させる手立て)が問題になってくる。
1文字ずつの印字ではなくメモリに記憶させ、03H,02H受信時に判断して印字データを生成するしかないが、万一、RS232Cの通信制御が上手くいかない(データ送信の一時ストップ、wait処理ができない場合)際には、データ欠損になってしまう。
CT-1000のマニュアルを見ると、なんとなくwait処理が出来なさそうな不安を覚える。
プリンタへのデータ送信や、印字データの加工に時間がかかっても問題になる。
加工を2分割などするには、さらなるフラグ処理を行いながらデータ受信を処理させる必要もある。
制御コード以外の処理で、何文字に1回、加工処理をさせるとか複雑になればやはり厄介になる。
カウントして何文字めでどういった処理をする、速度重視であればその程度で収めるしかない。
CT-1000は実物があるのだから、テストしてみて、トライアンドエラー。
とにかく、簡単な方法から確立させて行く。
そんなところです。
2017/10/27追記
よくよく考えると、借用を含めて機材を電子的に破損させる可能性が出て来ました。
RS232CやRS422の機材を考慮(耐電圧設計のもの)すればいいのかもしれませんが、当面は実機に接続することは考えずに設計して見たいと思います。
ただ、陸上競技のリザルトシステムにも応用できるシステムにできそうなので、改めて記事を書いてみます。
- 関連記事
-
- 同期ケーブル(Seiko SY-456)、会社に届く (2017/12/07)
- 思案中…arduinoでCT-1000のデータを受信する手順 (2017/10/23)
- 水泳リザルトシステムなど、メモ・覚書 (2016/11/20)
スポンサーサイト