わかりましたので、qt-C++ プログラムを使用してホスト システムから SBC6845 にあるプログラム./led.shを実行しています。このプログラムは基本的に、SBC をホスト システムに接続します。「ハイパーターミナル」または「Minicom」に相当します。http://code.google.com/p/qextserialport/から「qextserialport-1.2rc.zip」内のこのプログラム (サンプル コード)「uartassistant」を取得しました。
このリンクに出くわしました: QTプログラム内からシェル コマンドを実行する方法を検索しているときに、ubuntu の QT c++ でシェル コマンドを実行しています。./led.shを実行してみましたが成功しました。リンクのおかげです。
私は宣言した
void someaction(); // in the dialog.h
次に、dialog.cppにこれを追加します
connect(ui->pushButton, SIGNAL(clicked()), SLOT(someaction()));
この
void Dialog::someaction()
{
QString command = "sh ./led.sh\r\n"; const char* command2;
command2 = command.toLocal8Bit().data();
port->write(command2);
SBCでLEDフラッシュを行うことができました。
しかし、 ./led.sh を停止しようとすると問題が発生し、uartassistantで停止できません (バグ、変更が必要、まだ機能しています)。しかし、当分の間、別の pushbutton_1 を作成し、「Ctrl+Z」のようなものを中に入れて、 . /led.shに停止を依頼しようとしています。評判ポイントが低いために配置できない他のリンクに出くわしました。qtアプリ内で[他のリンクから] SIGTERM / killオプションを使用し、プッシュボタンのクリックで実行する方法がわかりません。killを使用した場合、そのような複数のプッシュボタン アクションのpidofをどのように判断し、誰を殺すかを割り当てるとします。
また、私の SBC には灰 [Almquist shell] があることを付け加えたいと思います。したがって、これは Bourne シェルの低メモリ クローンであり、 led.shを終了するための通常のコマンドをサポートするかどうかはわかりません。