我目前在一个项目中,涉及从具有 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++ 示例,因为看起来,C++ 和 VISUAL C++ 不是一回事,而且行为可能非常不同 :o(
我非常感谢任何帮助,以及阅读本文。
(编辑:如果有更好的方法来做到这一点,而不会为新手带来任何额外的复杂性开销,我很乐意尝试。我喜欢套接字的东西,因为它是语言透明的,并且以非常快的速度解决了以前的问题)