私は現在、Visual C++ API を備えたデバイスからキャプチャされた信号のデータ視覚化を含むプロジェクトに参加しています。現在、各データサンプルをファイルに記録できますが、何らかのプロットを画面に表示したいと考えています。
以前、C++ と Python の間でソケットを使用して同様の仕事を成功させた経験がありますが、コードが失われました。再利用する Python ソケット "レシーバー" はありますが、リバース エンジニアリングやその他の方法でコピー/貼り付けする Visual C++ "センダー" はありません。
非常にうまく機能していた私の現在のPythonコードは次のとおりです。
import SocketServer
class SocketHandler(SocketServer.BaseRequestHandler):
def handle(self):
data = self.request[0].strip()
## do something with 'data' here!
server = SocketServer.UDPServer(("192.168.1.23", 8888), SocketHandler)
server.serve_forever()
そして、現在ファイルにログを記録し、ソケットに送信したいVisual C++の部分は次のとおりです。
#include <fstream>
//(...lots of code...)
short int * dataBuff;
unsigned int dataNum;
int isAcqRunning;
int startFromTrg, stopFromTrg;
unsigned int firstSample, lastSample;
int errcode;
int i;
std::ofstream out("./out.txt");
// device->transferData is called inside a loop
// to get data from aquisition hardware's buffer
errcode = device->transferData(&dataBuff, &dataNum, &isAcqRunning,
&startFromTrg, &stopFromTrg,
&firstSample, &lastSample);
if(errcode == 0)
{
printf("\n Acquired samples: %d", dataNum);
for (i=firstSample; i<lastSample; i++)
out<<dataBuff[i]<<'\n'; /////// I'd like to send dataBuff[i] via socket!!
}
//(...lots of more code...)
おそらく役立つ追加情報:
- Windows7 で VisualStudio 2010 を使用しています。
- 人生で C++ コードに触れるのはこれが初めてで、ほぼすべて Python を使用しています。
- どうやら、C++ と VISUAL C++ は同じものではなく、非常に異なる動作をする可能性があるため、本やサイトから C++ の例をたどろうとしてもうまくいきませんでした :o(
助けてくれて、これを読んでくれて本当にありがとう。
(編集:noobの追加の複雑なオーバーヘッドなしでそれを行うためのより良い方法があれば、喜んで試してみたいと思います。言語透過的であり、以前の問題を非常に高速に解決したため、ソケットが好きです)