我开发了一款Android应用程序,可通过蓝牙SPP连接运行Matlab的笔记本电脑。我能够轻松地来回发送字符串,我现在有兴趣从Matlab发送图像到平板电脑上显示(48x64灰度就足够了)。我不确定如何打包图像并将其发送到Matlab串口。我猜你不能只使用fprintf或fwrite。
这就是我认为Android方面可能看起来像
public void drawImage(byte[] buffer){
ImageView camView = (ImageView)findViewById(R.id.camView);
Bitmap myBitmap = BitmapFactory.decodeByteArray(buffer, 0, buffer.length);
Log.d(TAG,"decoded image");
if(myBitmap != null){
camView.setImageBitmap(myBitmap);
Log.d(TAG,"Trying to display...");
}
else{
Log.d(TAG, "Bitmap = null");
}
}// end drawImage
对Andriod或Matlab方面的任何建议都将不胜感激。谢谢!
答案 0 :(得分:0)
您是否只是想从Matlab接收串行数据?为什么不像任何其他串行数据一样对待它。
我会首先通过Android控制台应用程序进行调试,以确保它完全正在传输,并确保数据以您希望的方式传输。
答案 1 :(得分:0)
所以我开始工作了。基本上问题是我没有使用适当的压缩(.jpg或.png)发送图像。我发现如果你有一个Matlab图像,Matlab只是像素数值矩阵而不管压缩,你需要创建一个java BufferedImage来正确构造字节数组,这样你就可以在Android端对它进行解码。
Matlab方面
import java.awt.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
serCam = InitUSBcamera; % initialize USB camera as a serial port
type = java.lang.String('jpg'); % translating matlab to java
outputStream = ByteArrayOutputStream; % create java output stream
im = getsnapshot(serCam); % get an image from the camera
im2 = imresize(im, [96,128],'nearest'); % reduce the size
im3 = im2java2d(im2); % create java Buffered Image
ImageIO.write(im3, type, outputStream);
bytes = outputStream.toByteArray();
fwrite(serTablet, bytes, 'int8') % send the image // changed to async