我尝试将import { HttpClient, HttpHeaders } from '@angular/common/http';
/ this.http.get<Person[]>('url', options).subscribe(persons => this.persons = persons /* ... */);
数据解释为Char
,一次4个字节。这是因为我只能让String
/ Byte
将流式数据解释为String,而不是其他任何数据类型。我仍然不知道如何获取TComport
方法和TDatapacket
事件处理程序以与TComport一起使用。
我正在尝试使用某些Delphi代码从质谱仪(MS)中获取数据。仪器通过串行电缆连接,并遵循RS232协议。我能够发送命令并处理来自MS的基于文本的输出,但是没有问题,但是在解释数据缓冲区时遇到了麻烦。
从该仪器的用户手册中:
“除离子电流值外,RGA的输出是由换行符+回车符终止的ASCII字符串。离子信号以10 ^ -16安培为单位表示为整数,并直接以十六进制格式(四个字节的整数,2的补码格式,最低有效字节在前),以实现最大的数据吞吐量。”
我不确定(1)十六进制数据是否可以正确存储在字符串变量中。我也不确定如何在Delphi中先(2)实施2的补码,然后首先实现(3)最低有效字节。
答案 0 :(得分:0)
按照@David Heffernan的建议,我去修改了我的数据类型。尝试从字符中获取二进制数据是行不通的,因为不能正确表示0-255之间的所有值。基本上,您会丢失数据。特别是您的数据一次代表4个字节。
对我来说,解决方案是使用Async Professional组件而不是Denjan的Comport库。它可以更好地处理数据流,并具有内置日志,我可以使用该日志来了解如何解释仪器中的流驻留。也有更好的记录。因此,如果您不熟悉串行通信(例如我),那就去吧。