您的位置:程序门 -> .net技术 -> c#



急呀,请教 vs2003 c# + axmscomm 开发串口问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


急呀,请教 vs2003 c# + axmscomm 开发串口问题[已结贴,结贴人:dboyggyy]
发表于:2007-01-31 01:00:04 楼主
我第一次做串口方面的开发,关于称重系统的,其它模块都做好了
但在读串口数据时发生问题

当重量为1190时
我用其它串口调试工具显示如下:
fd   00   90   11   00   05   54

而我的程序只能显示
00   90   11   00   05   54
而且在某些重量时,会显示错误的数据如下
00   3f   00   05   29

我的程序==========================================================
axmscomm1.rthreshold=14;
string[]   ww=new   string[14];
for(int   i=0;i <14;i++)
{
  by=system.text.encoding.ascii.getbytes(axmscomm1.input.tostring());
  ww[i]=bytetostring(by);
  textbox2.appendtext(ww[i]);
}

public     byte[]   stringtobyte(string   instring)  
{
  string[]   bytestrings;
  bytestrings   =   instring.split( "   ".tochararray());
  byte[]   byteout;
  byteout   =   new   byte[bytestrings.length-1];
  for   (int   i   =   0;i==bytestrings.length-1;i++)  
  {
    byteout[i]   =   convert.tobyte(( "0x "   +   bytestrings[i]));
  }  
  return   byteout;
}

是否是编码转换的问题?
发表于:2007-01-31 10:43:331楼 得分:50
by=system.text.encoding.ascii.getbytes(axmscomm1.input.tostring());
是的
0xfd的ascii不存在
发表于:2007-01-31 10:47:582楼 得分:0
你得把axmscomm1.input.tostring()拆开放进byte[]里面
string   source=axmscomm1.input.tostring();
for(int   i=0;i <source.length/2;i++)
{
      bytes[i]=convert.tobyte(source.substring(i*2,2),16);
}

source要是十六进制表示的没有空格的数据     如:fd   00   90   11   00   05   54就得先把空格去掉
发表于:2007-01-31 10:49:253楼 得分:0
tuyile006(小y)   (   )   信誉:100         blog     2007-01-31   10:43:33     得分:   0    
 
 
      by=system.text.encoding.ascii.getbytes(axmscomm1.input.tostring());
是的
0xfd的ascii不存在
   
 
怎么才能让串口传过来的数据在传换成getbytes里都不会丢失呀,我用gb2312也出现同样的问题


快速检索

最新资讯
热门点击