我正在尝试开发一个 Android 应用程序,它与用 C++ 编写的函数执行相同的功能,以在手机和远程以太网接口之间进行通信(我不知道它到底是什么......)。
我知道我必须将 15 个字节从十六进制值中检索到接口传递给连接到接口的一些负载。
我已经尝试了一些事情,最接近正确解决方案的似乎是这个:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.2.100:1001");
try {
//String message "AA10A0F0F0FFFF0102FF00010091A5";
byte[] messaggioInBytes={(byte)10101010, //AA
(byte)00010000, //10
(byte)10100000, //A0
(byte)11110000, //F0
(byte)11110000, //F0
(byte)11111111, //FF
(byte)11111111, //FF
(byte)00000001, //01
(byte)00000010, //02
(byte)11111111, //FF
(byte)00000000, //00
(byte)00000001, //01
(byte)00000000, //00
(byte)10010001, //91
(byte)10100101}; //A5
httppost.setEntity(new ByteArrayEntity(messaggioInBytes));
// Execute HTTP Post Request
httpclient.execute(httppost);
} catch(Exception e){
Log.i("ConnectionHandler", "Error", e);
}
使用此代码,以太网接口停止闪烁并开始监听,但它似乎没有接收到正确的命令字节串。
我的疑惑与:1.发送命令的格式 2.使用的连接类型
关于这个系统,我唯一知道的是它与这个 C++ 函数配合得很好,所以我想知道是否有办法将它翻译成 Android 的 Java 代码,而不是使用 Android NDK 来导入它。
C++ 函数如下:
void __fastcall TForm1::SendClick(TObject *Sender)
{
unsigned char Buffer[15];
AnsiString Line;
Buffer[0] = 0xAA;
...
Buffer[13] = 0x91;
Buffer[14] = 0xA5;
ClientSocket1->Socket->SendBuf(Buffer,15);
}
有没有人可以指出我正确的方向?