dxt_1515 2016-05-16 14:03 采纳率: 25%
浏览 2518

将C++转换为java代码?

bool TCommThread::ReceiveChar(char Char)
{
// Modbus报文的第一个字符应当是':'
if(Char != 'p' && __RxBuffer.size() == 0)
return false;

// 将字符写入缓冲
__RxBuffer.push_back(Char);

// 如果收到的字符不是结束符,则退出
if(Char != '!')
{
if(__RxBuffer.size() > 10)
__RxBuffer.clear();
return false;
}

// 收到结束符,对报文加以解析处理
// 首先检查报文格式
if(__RxBuffer.size() != 10)

{
__RxBuffer.clear();
return false;
}

// 解析应答报文
if(__RxBuffer[1] == '1')
LPosition = CharToWord(RxBuffer, 3);
else if(__RxBuffer[1] == '2')
RPosition = CharToWord(RxBuffer, 3);

Synchronize(Form1->ShowStripPosition);

return true;
}
//------------------------------------------------------------------------------
// CharToHex()
//------------------------------------------------------------------------------
Byte TCommThread::CharToHex(char Char)
{
if(Char >= '0' && Char <= '9')
return Char - '0';
else if(Char >= 'A' && Char <= 'F')
return Char - 'A' + 10;
else if(Char >= 'a' && Char <= 'f')
return Char - 'a' + 10;
else
return 0;
}
//------------------------------------------------------------------------------
// CharToWord()
//------------------------------------------------------------------------------
Word TCommThread::CharToWord(vector &Buffer, unsigned int Begin)
{
return (CharToHex(Buffer[Begin]) << 12) |
(CharToHex(Buffer[Begin + 1]) << 8) |
(CharToHex(Buffer[Begin + 2]) << 4) |
CharToHex(Buffer[Begin + 3]);
}

  • 写回答

2条回答 默认 最新

  • dxt_1515 2016-05-16 14:05
    关注

    //报文判断
    //------------------------------------------------------------------------------
    // ReceiveChar()
    //------------------------------------------------------------------------------
    private boolean ReceiveChar(char Char,int len)
    {

    __RxBuffer=new byte[len];
    System.arraycopy(inBuf, 0, __RxBuffer, 0, len);

               // Modbus报文的第一个字符应当是':'
               if(Char != 'p' && __RxBuffer.length == 0)
                  return false;
    
               // 将字符写入缓冲
    
               //byte[] inbuf=new byte[256];
    
             //  __RxBuffer.writeToParcel(inBuf, Char);
    
    
    
               // 如果收到的字符不是结束符,则退出
    
               if(Char != '!')
               {
                  if(__RxBuffer.length > 10)
                    // __RxBuffer.clear();
                  return false;
               }
    
               // 收到结束符,对报文加以解析处理
               // 首先检查报文格式
               if(__RxBuffer.length != 10)      
               {
                 // __RxBuffer.clear();
                  return false;
               }
    
               // 解析应答报文
            Object __LPosition;
            Object __RPosition;
    
            if(__RxBuffer[1] == '1')
                 __LPosition = CharToWord(__RxBuffer, 3);
    
               else if(__RxBuffer[1] == '2')
                  __RPosition = CharToWord(__RxBuffer, 3);
    
    
               return true;
            }
    
    
    
            //------------------------------------------------------------------------------
            // CharToHex()
            //------------------------------------------------------------------------------
            @SuppressLint("DefaultLocale")
            private Byte CharToHex(byte buffer)
            {
               if(buffer >= '0' && buffer <= '9')
                  return (byte) (buffer - '0');
               else if(buffer >= 'A' && buffer <= 'F')
                  return (byte) (buffer - 'A' + 10);
               else if(buffer >= 'a' && buffer <= 'f')
                  return (byte) (buffer - 'a' + 10);
               else
                  return 0;
            }
            //------------------------------------------------------------------------------
            // CharToWord()
            //------------------------------------------------------------------------------
             private int CharToWord(byte[] Buffer,  int Begin )
            {
               return (CharToHex(Buffer[Begin])     << 12) |
                      (CharToHex(Buffer[Begin + 1]) << 8)  |
                      (CharToHex(Buffer[Begin + 2]) << 4)  |
                       CharToHex(Buffer[Begin + 3]);
            }
    

    这个是我写的,但是调用显示的时候老是报错!
    receiveInfo = CharToWord(inBuf,inPacket.getLength());

    point2.setText(receiveInfo);

    想请大神帮我改一下,万分感谢!

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog