問題タブ [orsserialport]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1158 参照

macos - ORSSerialPort serialRead in swift

Swift で ORSSerialPort を使用しようとしています。しかし、シリアルポートからのデータの読み取りに問題があります。問題は、serialPort 関数の実装が間違っていることです。たぶん、この部分が役立つでしょう:

  • (void)serialPort:(ORSSerialPort *)serialPort didReceiveResponse:(NSData *)responseData toRequest:(ORSSerialRequest *)request;



0 投票する
1 に答える
800 参照

macos - ORSSerialPort の仮想シリアル ポート

ORSSerialPortを使用して OSX コントロール アプリケーションを書き直しています。場合によっては、自分のマシンに直接接続されていないシリアル デバイスを制御したり、テストのためにそのようなデバイスの通信をローカルでモックしたりしたいと考えています。socatを使用すると、仮想シリアル ポートを作成できます。たとえば、実際のシリアル デバイスからローカルまたはネットワーク経由で通信を行うことができます。

たとえば、ここでは仮想デバイスのペアを作成し、次のようにし/dev/masterます/dev/slavesudo socat -d -d -d -d -lf /tmp/socat pty,link=/dev/master,ixoff=0,ixon=0,ispeed=9600,ospeed=9600,echo=0,crtscts=0,user=gerwin,group=staff pty,link=/dev/slave,rawer,echo=0,user=gerwin,group=staff

このようなセットアップを使用すると、pySerial を使用して仮想ポートに接続できます。ただし、ORSSerialPort を使用してもうまくいきませんでした。

コードをステップ実行すると、これは「仮想」デバイスがレーダーに表示されない IOKit のみに依存する ORSSerialPort に起因するようです。また、パスを使用してインスタンスを初期化する場合、たとえば/dev/master、対応するインスタンスio_object_tが存在しない場合、初期化は nil を返します。

IOKit とカーネルの詳細については避けたいと思います (ここで提案されているように)。

コードを見ると、sendData はファイル記述子に書き込みます。ORSSerialPort を「プレーン」ファイル記述子で初期化し、詳細な ioctl 設定をスキップし、これをプレーン文字ストリームとして扱う方法がある可能性はありますか (これが pySerial の方法であると仮定します)。代替案はありますか?


2016 年 2 月 10 日更新:

この状況について、ORSSerialPort github issue listで作成者の armadsen と話し合いました。

基本的なアプローチは、InternalSerialPort と SerialPort の初期化子を「交換」して、パス初期化子が指定/必須のものになり、IOKit 初期化子がオプションのものになるようにすることだと思います。ファイル記述子を取得し、ポートとの間で読み取り/書き込みを行うために、パス (io_object_t ではない) が内部的に使用されていることは既に (ご指摘のとおり) です。つまり、これがそれほど複雑な変更ではないことを願っています。

以下に最終結果への回答を投稿しました...

0 投票する
2 に答える
600 参照

xcode - Mac アプリは Xcode 以外では実行できません。ライブラリがありませんか? ライブラリ ORSSerial の使用

私のアプリはエラーや警告なしでビルドされ、Xcode 7.2.1 で正常に動作します。しかし、アーカイブして Xcode の外部で開こうとすると、アイコンが一瞬点滅し、次のエラーが発生します。

Xcode の外部で動作するようにアプリをコンパイルするにはどうすればよいですか? この問題は、コンパイル済みの .app を XCODE 環境なしで開こうとすると発生します。

アプリはSwiftを使用して作成されています。

0 投票する
1 に答える
130 参照

swift - これからクラスを使ってまともなコードを作る方法 [Swift]

ORSSerialPort ライブラリを使用しているシリアル経由でデバイスを制御する OSX アプリを作成しています。しかし、コーディングにはいくつかの問題があります。私はコーディングが初めてで、適切にコーディングする方法がわからないため、何かを機能させようとすると問題が発生します。3 つの「クラス」を示し、それらの機能と、遭遇した問題について説明します。

ライブラリデリゲートが接続され、シリアルデバイスとのすべての通信を行うメインクラス (AE20125Controller.swift)

可能なすべてのメッセージが格納されている Dataprocessor クラスと、送信するデータと現在のすべての設定 (DataProcessor.swift) を組み立てたいフォーム

GUI でのすべての変更とアクションを処理する menuItems クラス。(MenuItems.swift)

AppDelegate には何も含まれていないため省略しましたが、ビューを構築するための設定です (たとえば、ビューの背景を白に変更します)。

クラス間で通信できません。たとえば、DataProcessor クラスの AE20125Controller クラスで sendData メソッドを使用してデータを送信する必要がありますが、それを開始する必要があります。しかし、DataProcessor クラスは AE20125Controller クラスで開始されますか? これは MenuItems クラスにも当てはまります。updateFreq ボタンが押されると、DataProcessor クラスのメソッド setData が呼び出されるはずですが、それを開始する必要があります。

正直なところ、私は自分が何をしているのか、このシステムを適切に機能させる方法がわからないので、すべてを 1 つのファイルにまとめずに、整理しておくことができます。繰り返しますが、私はプログラミングは初めてですが、(自分でそう言うかもしれませんが)プログラミングの知識はある程度あります。私の(くだらない)コードを整理するのを手伝ってください。また、今後これを回避する方法についてのヒントを教えてください。

(良い Advanced Swift OSX プログラミング ガイド/コースを知っている場合は、教えてください。(無料である必要はありません))

前もって感謝します

0 投票する
1 に答える
204 参照

swift - 1行のはずのORSSerialPortのデータが複数行に渡って入ってくる

私は 0.5 秒ごとに 1 行の GPS データをシリアル ラインに吐き出す arduino を持っています。これは、arduino IDE でシリアル モニターを見ることができ、0.5 秒ごとに新しい 1 行のデータが表示されるため、動作することがわかっています。

私は現在、Swift を使用して、シリアル ポート経由で入ってくる各座標をマップに配置し、ORSSerialPort ライブラリを使用して arduino に接続し、そのデータを受信する Mac プログラムを作成中です。これは正常に機能し、以前は基本的なバージョンが機能していましたが、GPS データにギャップがあることに気付きました (それらはマップ上に小さなグループで表示され、一定の線であるはずなのにその間に顕著なスペースがありました)。 .

マップを作成する前に、各 GPS データ行が追加されるテキスト フィールドがあり、arduino IDE シリアル モニターとまったく同じ出力が生成されたので、すべて正常に動作していると思いました。

マップの問題を修正するために、マップ コードを削除しprint()、シリアル ポート経由で入力された XCode IDE に各行を単純に編集しました。驚いたことに、データにランダムな改行があり、その理由がわかりません。これが私が抱えている問題を引き起こしている可能性があると感じているので(個々の値を抽出できるようにコンマごとに文字列を分割することで)、arduino IDEとテキストフィールドでなぜそれが1行として出力されるのか知りたい.しかし、XCode IDE ではなく、おそらく文字列を操作している場合はいつでもそうです。

編集: XCode IDE への印刷とテキスト フィールドへの出力の前に 5 つのプラス記号を付け、それらの末尾に 5 つのダッシュを付けてから、1 つのレポート (1 行のデータである必要があります) を送信した後にシリアル ポートを閉じるように設定しました。私が得た両方の出力は、最終的に 3 行になり、それぞれにプラスとダッシュが接頭辞と接尾辞として付けられました。以下の写真を参照してください。これは、1 行であるべきことを示しています。

データの 1 行が複数の行にまたがり、個々の変数のように動作するのはなぜですか (行の最後の文字を取得すると、セミコロンではなく、3 つの行の最初の行の最後の文字が返されるように)。