53

LED サインにテキストを送信するプログラムがあります。

プリズムコム.exe

プログラムを使用して「Hello」を送信するには:

prismcom.exe usb Hello

ここで、たとえば、Temperature というコマンド プログラムを使用したいと考えています。

temperature

プログラムがコンピューターの温度を提供するとしましょう。

Your computer is 100 degrees Fahrenheit.

ここで、温度の出力をprismcom.exeに書き込みたいと思います:

temperature | prismcom.exe usb

これはうまくいかないようです。

はい、これに対する解決策を 20 分以上探しました。いずれの場合も、それらはクラッジ/ハック、または Windows コマンド ライン以外の解決策のいずれかです。

温度からプリズムコムへの出力をどのようにパイプするかについての指示をいただければ幸いです。

ありがとう!

編集: Prismcom には 2 つの引数があります。最初は常に「usb」です。それ以降は看板に表示されます。

4

4 に答える 4

34

これを試して。これを send.bat などのバッチ ファイルにコピーして実行send.batし、温度プログラムからプリズムコム プログラムにメッセージを送信します。

temperature.exe > msg.txt
set /p msg= < msg.txt
prismcom.exe usb "%msg%"
于 2013-01-29T02:24:09.817 に答える
18

PowerShell を使用して、Cmd.exe コマンド ラインでまったく同じコマンドを実行することもできます。シンプルにするために、このアプローチを使用します...

C:\>PowerShell -Command "temperature | prismcom.exe usb"

「 Windows PowerShell パイプラインについて」を読んでください。

C:\>PowerShellコマンド ラインで入力することもできます。すぐにPS C:\>モードになり、直接 PS を書き始めることができます。

于 2016-01-14T15:15:59.940 に答える
16

これはうまくいくはずです:

for /F "tokens=*" %i in ('temperature') do prismcom.exe usb %i

バッチ ファイルで実行する場合は%%i、just の代わりに%i(両方の場所で) を使用する必要があります。

于 2013-01-29T02:12:38.247 に答える
-4

これらのプログラムをコーディングしているかどうかはわかりませんが、これはどのようにコーディングするかの簡単な例です。

program1.c

#include <stdio.h>
int main (int argc, char * argv[] ) {
    printf("%s", argv[1]); 
    return 0;
}

rgx.cpp

#include <cstdio>
#include <regex>
#include <iostream>
using namespace std;
int main (int argc, char * argv[] ) {
    char input[200];
    fgets(input,200,stdin);
    string s(input)
    smatch m;
    string reg_exp(argv[1]);
    regex e(reg_exp);
    while (regex_search (s,m,e)) {
      for (auto x:m) cout << x << " ";
      cout << endl;
      s = m.suffix().str();
    }
    return 0;
}

両方をコンパイルしてから実行しますprogram1.exe "this subject has a submarine as a subsequence" | rgx.exe "\b(sub)([^ ]*)"

オペレーターは|、program1 のprintf操作の出力をstdoutストリームからストリームにリダイレクトするだけstdinで、rgx.exe が取得するのを待っています。

于 2019-08-02T15:58:20.533 に答える