我用mscom控件读取下微机的通信数据,怎么一些字符不能显示,用?标出,但在转化成float型时就出错了,请教各位怎么更正?急求!!!!
我接收时是 var ls:variant;
ls:=form1.mscom1.input;
然后用pos定位,读取字符转化成数值.
在读书过程中有错的也有对的.....
我接收时是 var ls:variant;
ls:=form1.mscom1.input;
然后用pos定位,读取字符转化成数值.
在读书过程中有错的也有对的.....
解决方案 »
- 自动填表 注册邮箱问题 delphi
- 关于FreeLibrary的机制(在线等)
- 请教Sql语句
- FastReport2.47如何才能正确显示整形数据项?
- 怎样用delphi或网页语言(asp、vbscript等)取得服务器的IP或Name
- 高分相送一道推理题:知道答案的人将是一个优秀的程序员(题目很短)
- 怎么用SQL语句清空数据库??
- DataSet组件的POST方法是不是将所有记录(包括未修改记录)都post给服务器?
- 高高高手请回答“如何在exe文件运行时修改自身常数,并保存下来,下次就可以用此常数”
- 求助:关于DELPHI6的安装问题
- 如何判断一文本文件中包含某一字符串?
- 跪求!制造业ERP的需求说明书或流程说明,百分相送,谢谢
在转化过程总strtofloatdef(is,0)
你应该将你收到的东西,全部用ascii码打出来,然后分析一下,看看是否都是
可以用strtofloat函数执行的呀。
我猜应该是你将控制字符也当成数据来处理了。所以报错
需要数据验证,
除非是受到了干扰。
串口返回数据有时比较慢,需要多读几次,才能完全读完所有的数据。
采用二进制格式接收就好了,直接用数组方式接收,再转化成字符方式,代码如下:
var
m:integer;
redate: Array of variant;
var y:integer;
var d:String;
redate:=form2.mscomm1.input;
form2.MSComm1.InBufferCount:=0;
d:='';
for y:=0 to VarArrayHighBound(redate,1) do
begin
d:=vartostr(redate[y]);
if d='87' then
begin
m:=strtoint(vartostr(redate[y+1]));