現在有一個想法準備在嵌入式設備和pc之間通過網絡實現一種類似遠程桌面的功能,在pc端可以看到嵌入式設備顯示的內容,並且可以使用鼠標和鍵盤操作嵌入式設備的程序。
查看了網絡上的一些資料後,準備使用vnc功能來實現,在嵌入式設備端啓動vncserver,在pc端啓動vncclient,建立連接後能實現需要的功能。準備嘗試的方法有兩種:
一種是在編譯Qt時加入vnc的支持。參考的資料是
http://doc.qt.io/archives/qt-4.8/qt-embedded-vnc.html
http://www.friendlyarm.net/forum/topic/5029
http://bbs.csdn.net/topics/380149017
具體做法是編譯Qt時加入編譯選項
-qt-gfx-vnc
-plugin-gfx-vnc
-qt-gfx-linuxfb
-plugin-gfx-linuxfb
編譯完成後把生成的libqgfxvnc.so和libqscreenlinuxfb.so拷貝到開發板 qt路徑/plugins/gfxdrivers/
然後在嵌入式設備啓動應用程序 ./myapp -qws -display VNC:0
這時出現了
VNC: driver not found
Aborted
最後這個問題沒有解決掉,放棄了這個方法。
第二種方法是使用x11vnc。參考的資料是
https://forum.qt.io/topic/66162/running-vnc-server-on-embedded-linux/2
http://blog.csdn.net/xiaolangyangyang/article/details/52950690
具體做法是
1.先下載x11vnc源碼地址在http://www.karlrunge.com/x11vnc/#downloading
2.編譯源碼:
# tar -xjvf x11vnc-0.9.13.tar.gz# cd x11vnc-0.9.13# CC=arm-fsl-linux-gnueabi-gcc CFLAGS=-O2 ./configure --host=arm-linux --without-x --prefix=./_INSTALL/# make# make install
3.拷貝生成的x11vnc到設備上。
4.啓動x11vnc。
/app/x11vnc-noipv6 -rawfb /dev/fb0 -pipeinput UINPUT:touch,tslib_cal=/etc/pointercal,direct_abs=/dev/input/event2,nouinput,dragskip=4 -clip 640x480+0+0
其中校準文件tslib_cal和觸摸屏設備direct_abs的路徑要換成自己設備中的路徑。
5.在pc端通過vnc客戶端工具如vncviewer連接設備,這時就能看到設備顯示的內容了,而且可以通過鼠標操作設備了。