久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3348|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

串口通信助手 MATLAB版本源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
串口通信助手 matlab程序


源程序如下:
  1. function varargout = serial_communication2(varargin)
  2. gui_Singleton = 1;
  3. gui_State = struct('gui_Name',       mfilename, ...
  4.                    'gui_Singleton',  gui_Singleton, ...
  5.                    'gui_OpeningFcn', @serial_communication2_OpeningFcn, ...
  6.                    'gui_OutputFcn',  @serial_communication2_OutputFcn, ...
  7.                    'gui_LayoutFcn',  [] , ...
  8.                    'gui_Callback',   []);
  9. if nargin && ischar(varargin{1})
  10.     gui_State.gui_Callback = str2func(varargin{1});
  11. end

  12. if nargout
  13.     [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
  14. else
  15.     gui_mainfcn(gui_State, varargin{:});
  16. end

  17. function serial_communication2_OpeningFcn(hObject, eventdata, handles, varargin)
  18. handles.output = hObject;
  19. warning('off');
  20. javaFrame = get(hObject, 'JavaFrame');
  21. javaFrame.setFigureIcon(javax.swing.ImageIcon('icon.jpg'));
  22. %% 初始化參數(shù)
  23. hasData = false; %表征串口是否接收到數(shù)據(jù)
  24. isShow = false;  %表征是否正在進(jìn)行數(shù)據(jù)顯示,即是否正在執(zhí)行函數(shù)dataDisp
  25. isStopDisp = false;  %表征是否按下了【停止顯示】按鈕
  26. isHexDisp = false;   %表征是否勾選了【十六進(jìn)制顯示】
  27. isHexSend = false;   %表征是否勾選了【十六進(jìn)制發(fā)送】
  28. numRec = 0;    %接收字符計(jì)數(shù)
  29. numSend = 0;   %發(fā)送字符計(jì)數(shù)
  30. strRec = '';   %已接收的字符串
  31. %% 將上述參數(shù)作為應(yīng)用數(shù)據(jù),存入窗口對象內(nèi)
  32. setappdata(hObject, 'hasData', hasData);
  33. setappdata(hObject, 'strRec', strRec);
  34. setappdata(hObject, 'numRec', numRec);
  35. setappdata(hObject, 'numSend', numSend);
  36. setappdata(hObject, 'isShow', isShow);
  37. setappdata(hObject, 'isStopDisp', isStopDisp);
  38. setappdata(hObject, 'isHexDisp', isHexDisp);
  39. setappdata(hObject, 'isHexSend', isHexSend);
  40. guidata(hObject, handles);

  41. function varargout = serial_communication2_OutputFcn(hObject, eventdata, handles)
  42. varargout{1} = handles.output;

  43. function com_Callback(hObject, ~, handles)

  44. function com_CreateFcn(hObject, eventdata, handles)
  45. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
  46.     set(hObject,'BackgroundColor','white');
  47. end

  48. function rate_Callback(hObject, eventdata, handles)

  49. function rate_CreateFcn(hObject, eventdata, handles)
  50. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
  51.     set(hObject,'BackgroundColor','white');
  52. end

  53. function jiaoyan_Callback(hObject, eventdata, handles)

  54. function jiaoyan_CreateFcn(hObject, eventdata, handles)
  55. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
  56.     set(hObject,'BackgroundColor','white');
  57. end

  58. function data_bits_Callback(hObject, eventdata, handles)

  59. function data_bits_CreateFcn(hObject, eventdata, handles)
  60. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
  61.     set(hObject,'BackgroundColor','white');
  62. end

  63. function stop_bits_Callback(hObject, eventdata, handles)

  64. function stop_bits_CreateFcn(hObject, eventdata, handles)
  65. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
  66.     set(hObject,'BackgroundColor','white');
  67. end

  68. function start_serial_Callback(hObject, eventdata, handles)
  69. %   【打開/關(guān)閉串口】按鈕的回調(diào)函數(shù)
  70. %    打開串口,并初始化相關(guān)參數(shù)

  71. %% 若按下【打開串口】按鈕,打開串口
  72. if get(hObject, 'value')
  73.     %% 獲取串口的端口名
  74.     com_n = sprintf('com%d', get(handles點(diǎn)com, 'value'));
  75.     %% 獲取波特率
  76.     rates = [300 600 1200 2400 4800 9600 19200 38400 43000 56000 57600 115200];
  77.     baud_rate = rates(get(handles.rate, 'value'));
  78.     %% 獲取校驗(yàn)位設(shè)置
  79.     switch get(handles.jiaoyan, 'value')
  80.         case 1
  81.             jiaoyan = 'none';
  82.         case 2
  83.             jiaoyan = 'odd';
  84.         case 3
  85.             jiaoyan = 'even';
  86.     end
  87.     %% 獲取數(shù)據(jù)位個數(shù)
  88.     data_bits = 5 + get(handles.data_bits, 'value');
  89.     %% 獲取停止位個數(shù)
  90.     stop_bits = get(handles.stop_bits, 'value');
  91.     %% 創(chuàng)建串口對象
  92.     scom = serial(com_n);
  93.     %% 配置串口屬性,指定其回調(diào)函數(shù)
  94.     set(scom, 'BaudRate', baud_rate, 'Parity', jiaoyan, 'DataBits',...
  95.         data_bits, 'StopBits', stop_bits, 'BytesAvailableFcnCount', 10,...
  96.         'BytesAvailableFcnMode', 'byte', 'BytesAvailableFcn', {@bytes, handles},...
  97.         'TimerPeriod', 0.05, 'timerfcn', {@dataDisp, handles});
  98.     %% 將串口對象的句柄作為用戶數(shù)據(jù),存入窗口對象
  99.     set(handles.figure1, 'UserData', scom);
  100.     %% 嘗試打開串口
  101.     try
  102.         fopen(scom);  %打開串口
  103.     catch   % 若串口打開失敗,提示“串口不可獲得!”
  104.         msgbox('串口不可獲得!');
  105.         set(hObject, 'value', 0);  %彈起本按鈕
  106.         return;
  107.     end
  108.     %% 打開串口后,允許串口發(fā)送數(shù)據(jù),清空接收顯示區(qū),點(diǎn)亮串口狀態(tài)指示燈,
  109.     %% 并更改本按鈕文本為“關(guān)閉串口”
  110.     set(handles.period_send, 'Enable', 'on');  %啟用【自動發(fā)送】按鈕
  111.     set(handles.manual_send, 'Enable', 'on');  %啟用【手動發(fā)送】按鈕
  112.     set(handles.xianshi, 'string', ''); %清空接收顯示區(qū)
  113.     set(handles.activex1, 'value', 1);  %點(diǎn)亮串口狀態(tài)指示燈
  114.     set(hObject, 'String', '關(guān)閉串口');  %設(shè)置本按鈕文本為“關(guān)閉串口”
  115. else  %若關(guān)閉串口
  116.     %% 停止并刪除定時器
  117.     t = timerfind;
  118.     if ~isempty(t)
  119.         stop(t);
  120.         delete(t);
  121.     end
  122.     %% 停止并刪除串口對象
  123.     scoms = instrfind;
  124.     stopasync(scoms);
  125.     fclose(scoms);
  126.     delete(scoms);
  127.     %% 禁用【自動發(fā)送】和【手動發(fā)送】按鈕,熄滅串口狀態(tài)指示燈
  128.     set(handles.period_send, 'Enable', 'off', 'value', 0); %禁用【自動發(fā)送】按鈕
  129.     set(handles.manual_send, 'Enable', 'off');  %禁用【手動發(fā)送】按鈕
  130.     set(handles.activex1, 'value', 0);  %熄滅串口狀態(tài)指示燈
  131. end

  132. function dataDisp(obj, event, handles)
  133. global value
  134. %        串口的TimerFcn回調(diào)函數(shù)
  135. %   串口數(shù)據(jù)顯示
  136. %% 獲取參數(shù)
  137. hasData = getappdata(handles.figure1, 'hasData'); %串口是否收到數(shù)據(jù)
  138. strRec = getappdata(handles.figure1, 'strRec');   %串口數(shù)據(jù)的字符串形式,定時顯示該數(shù)據(jù)
  139. numRec = getappdata(handles.figure1, 'numRec');   %串口接收到的數(shù)據(jù)個數(shù)
  140. %% 若串口沒有接收到數(shù)據(jù),先嘗試接收串口數(shù)據(jù)
  141. if ~hasData
  142.     bytes(obj, event, handles);
  143. end
  144. %% 若串口有數(shù)據(jù),顯示串口數(shù)據(jù)
  145. if hasData
  146.     %% 給數(shù)據(jù)顯示模塊加互斥鎖
  147.     %% 在執(zhí)行顯示數(shù)據(jù)模塊時,不接受串口數(shù)據(jù),即不執(zhí)行BytesAvailableFcn回調(diào)函數(shù)
  148.     setappdata(handles.figure1, 'isShow', true);
  149.     %% 若要顯示的字符串長度超過10000,清空顯示區(qū)
  150.     if length(strRec) > 10000
  151.         strRec = '';
  152.         setappdata(handles.figure1, 'strRec', strRec);
  153.     end
  154.     %% 顯示數(shù)據(jù)
  155.     set(handles.xianshi, 'string', strRec);

  156. %保存成.txt文件   
  157. % [FileName PathName]=uiputfile({'*.txt','Txt Files(*.txt)';'*.*','All Files(*.*)'},'choose a File');
  158. % ysw= [PathName FileName];
  159. % dlmwrite(ysw, strRec,'delimiter','\t');
  160. % save ysw strRec
  161. % save(char(ysw), 'strRec')

  162. value=get(handles.xianshi,'string');
  163. % save('ysw.txt','value');
  164. save('ysw.mat','value');
  165. %
  166. % if isempty(value)
  167. %     msgbox( '當(dāng)前沒有接收到數(shù)據(jù)','提示');
  168. %     fclose(gcf)
  169. % else value
  170. if value
  171.     value1=textscan(value,'%s'); %讀取其中的數(shù)據(jù)
  172.     % value=textscan(ysw,'%s'); %讀取其中的數(shù)據(jù)
  173.     value2=value1{1};%得到數(shù)據(jù),存儲到value1中
  174.     num=length(value2);
  175.     val=[];
  176.     i=1;
  177.     for ii=1:2:num-1
  178.         val=[val,hex2dec(strcat(value2{ii},value2{ii+1}))];%轉(zhuǎn)換
  179.         time(i) = 0.05*ii;
  180.         i=i+1;
  181.     end
  182.     axes(handles.plotAD);
  183.    
  184.     plot(handles.plotAD,time,val);
  185. %     hold on
  186. %     close(figure(1))
  187. %   plot(val,'DisplayName','val','YDataSource','val');
  188. %   figure(gcf)
  189. %   set(gcf,'currentaxes',handles.plotAD);   
  190. end

  191. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  192.     %% 更新接收計(jì)數(shù)
  193.     set(handles.rec,'string', numRec);
  194.     %% 更新hasData標(biāo)志,表明串口數(shù)據(jù)已經(jīng)顯示
  195.     setappdata(handles.figure1, 'hasData', false);
  196.     %% 給數(shù)據(jù)顯示模塊解鎖
  197.     setappdata(handles.figure1, 'isShow', false);
  198. end

  199. function bytes(obj, ~, handles)
  200. %   串口的BytesAvailableFcn回調(diào)函數(shù)
  201. %   串口接收數(shù)據(jù)
  202. %% 獲取參數(shù)
  203. strRec = getappdata(handles.figure1, 'strRec'); %獲取串口要顯示的數(shù)據(jù)
  204. numRec = getappdata(handles.figure1, 'numRec'); %獲取串口已接收數(shù)據(jù)的個數(shù)
  205. isStopDisp = getappdata(handles.figure1, 'isStopDisp'); %是否按下了【停止顯示】按鈕
  206. isHexDisp = getappdata(handles.figure1, 'isHexDisp'); %是否十六進(jìn)制顯示
  207. isShow = getappdata(handles.figure1, 'isShow');  %是否正在執(zhí)行顯示數(shù)據(jù)操作
  208. %% 若正在執(zhí)行數(shù)據(jù)顯示操作,暫不接收串口數(shù)據(jù)
  209. if isShow
  210.     return;
  211. end
  212. %% 獲取串口可獲取的數(shù)據(jù)個數(shù)
  213. n = get(obj, 'BytesAvailable');
  214. %% 若串口有數(shù)據(jù),接收所有數(shù)據(jù)
  215. if n
  216.     %% 更新hasData參數(shù),表明串口有數(shù)據(jù)需要顯示
  217.     setappdata(handles.figure1, 'hasData', true);
  218.     %% 讀取串口數(shù)據(jù)
  219.     a = fread(obj, n, 'uchar');
  220.     %% 若沒有停止顯示,將接收到的數(shù)據(jù)解算出來,準(zhǔn)備顯示
  221.     if ~isStopDisp
  222.         %% 根據(jù)進(jìn)制顯示的狀態(tài),解析數(shù)據(jù)為要顯示的字符串
  223.         if ~isHexDisp
  224.             c = char(a');
  225.         else
  226.             strHex = dec2hex(a')';
  227.             strHex2 = [strHex; blanks(size(a, 1))];
  228.             c = strHex2(:)';
  229.         end
  230.         %% 更新已接收的數(shù)據(jù)個數(shù)
  231.         numRec = numRec + size(a, 1);
  232.         %% 更新要顯示的字符串
  233.         strRec = [strRec c];
  234.     end
  235.     %% 更新參數(shù)
  236.     setappdata(handles.figure1, 'numRec', numRec); %更新已接收的數(shù)據(jù)個數(shù)
  237.     setappdata(handles.figure1, 'strRec', strRec); %更新要顯示的字符串
  238. end


  239. function qingkong_Callback(hObject, eventdata, handles)
  240. %% 清空要顯示的字符串
  241. setappdata(handles.figure1, 'strRec', '');
  242. %% 清空顯示
  243. set(handles.xianshi, 'String', '');

  244. function stop_disp_Callback(hObject, eventdata, handles)
  245. %% 根據(jù)【停止顯示】按鈕的狀態(tài),更新isStopDisp參數(shù)
  246. if get(hObject, 'Value')
  247.     isStopDisp = true;
  248. else
  249.     isStopDisp = false;
  250. end
  251. setappdata(handles.figure1, 'isStopDisp', isStopDisp);

  252. function radiobutton1_Callback(hObject, eventdata, handles)

  253. function radiobutton2_Callback(hObject, eventdata, handles)

  254. function togglebutton4_Callback(hObject, eventdata, handles)

  255. function hex_disp_Callback(hObject, eventdata, handles)
  256. %% 根據(jù)【十六進(jìn)制顯示】復(fù)選框的狀態(tài),更新isHexDisp參數(shù)
  257. if get(hObject, 'Value')
  258.     isHexDisp = true;
  259. else
  260.     isHexDisp = false;
  261. end
  262. setappdata(handles.figure1, 'isHexDisp', isHexDisp);

  263. function manual_send_Callback(hObject, eventdata, handles)
  264. scom = get(handles.figure1, 'UserData');
  265. numSend = getappdata(handles.figure1, 'numSend');
  266. val = get(handles.sends, 'UserData');
  267. numSend = numSend + length(val);
  268. set(handles.trans, 'string', num2str(numSend));
  269. setappdata(handles.figure1, 'numSend', numSend);
  270. %% 若要發(fā)送的數(shù)據(jù)不為空,發(fā)送數(shù)據(jù)
  271. if ~isempty(val)
  272.     %% 設(shè)置倒計(jì)數(shù)的初值
  273.     n = 1000;
  274.     while n
  275.         %% 獲取串口的傳輸狀態(tài),若串口沒有正在寫數(shù)據(jù),寫入數(shù)據(jù)
  276.         str = get(scom, 'TransferStatus');
  277.         if ~(strcmp(str, 'write') || strcmp(str, 'read&write'))
  278.             fwrite(scom, val, 'uint8', 'async'); %數(shù)據(jù)寫入串口
  279.             break;
  280.         end
  281.         n = n - 1; %倒計(jì)數(shù)
  282.     end
  283. end


  284. function clear_send_Callback(hObject, eventdata, handles)
  285. %% 清空發(fā)送區(qū)
  286. set(handles.sends, 'string', '')
  287. %% 更新要發(fā)送的數(shù)據(jù)
  288. set(handles.sends, 'UserData', []);

  289. function checkbox2_Callback(hObject, eventdata, handles)


  290. function period_send_Callback(hObject, eventdata, handles)
  291. %   【自動發(fā)送】按鈕的Callback回調(diào)函數(shù)
  292. %% 若按下【自動發(fā)送】按鈕,啟動定時器;否則,停止并刪除定時器
  293. if get(hObject, 'value')
  294.     t1 = 0.001 * str2double(get(handles.period1, 'string'));%獲取定時器周期
  295.     t = timer('ExecutionMode','fixedrate', 'Period', t1, 'TimerFcn',...
  296.         {@manual_send_Callback, handles}); %創(chuàng)建定時器
  297.     set(handles.period1, 'Enable', 'off'); %禁用設(shè)置定時器周期的Edit Text對象
  298.     set(handles.sends, 'Enable', 'inactive'); %禁用數(shù)據(jù)發(fā)送編輯區(qū)
  299.     start(t);  %啟動定時器
  300. else
  301.     set(handles.period1, 'Enable', 'on'); %啟用設(shè)置定時器周期的Edit Text對象
  302.     set(handles.sends, 'Enable', 'on');   %啟用數(shù)據(jù)發(fā)送編輯區(qū)
  303.     t = timerfind; %查找定時器
  304.     stop(t); %停止定時器
  305.     delete(t); %刪除定時器
  306. end

  307. function period1_Callback(hObject, eventdata, handles)

  308. function period1_CreateFcn(hObject, eventdata, handles)
  309. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
  310.     set(hObject,'BackgroundColor','white');
  311. end

  312. function clear_count_Callback(hObject, eventdata, handles)
  313. %% 計(jì)數(shù)清零,并更新參數(shù)numRec和numSend
  314. set([handles.rec, handles.trans], 'string', '0')
  315. setappdata(handles.figure1, 'numRec', 0);
  316. setappdata(handles.figure1, 'numSend', 0);

  317. function copy_data_Callback(hObject, eventdata, handles)
  318. %% 設(shè)置是否允許復(fù)制接收數(shù)據(jù)顯示區(qū)內(nèi)的數(shù)據(jù)
  319. if get(hObject,'value')
  320.     set(handles.xianshi, 'enable', 'on');
  321. else
  322.     set(handles.xianshi, 'enable', 'inactive');
  323. end

  324. function figure1_CloseRequestFcn(hObject, eventdata, handles)
  325. %   關(guān)閉窗口時,檢查定時器和串口是否已關(guān)閉
  326. %   若沒有關(guān)閉,則先關(guān)閉
  327. %% 查找定時器
  328. t = timerfind;
  329. %% 若存在定時器對象,停止并關(guān)閉
  330. if ~isempty(t)
  331.     stop(t);  %若定時器沒有停止,則停止定時器
  332.     delete(t);
  333. end
  334. %% 查找串口對象
  335. scoms = instrfind;
  336. %% 嘗試停止、關(guān)閉刪除串口對象
  337. try
  338.     stopasync(scoms);
  339.     fclose(scoms);
  340.     delete(scoms);
  341. end
  342. %% 關(guān)閉窗口
  343. delete(hObject);

  344. function hex_send_Callback(hObject, eventdata, handles)
  345. %% 根據(jù)【十六進(jìn)制發(fā)送】復(fù)選框的狀態(tài),更新isHexSend參數(shù)
  346. if get(hObject,'value')
  347.     isHexSend = true;
  348. else
  349.     isHexSend = false;
  350. end
  351. setappdata(handles.figure1, 'isHexSend', isHexSend);
  352. %% 更新要發(fā)送的數(shù)據(jù)
  353. sends_Callback(handles.sends, eventdata, handles);


  354. function sends_Callback(hObject, eventdata, handles)
  355. %   數(shù)據(jù)發(fā)送編輯區(qū)的Callback回調(diào)函數(shù)
  356. %   更新要發(fā)送的數(shù)據(jù)
  357. %% 獲取數(shù)據(jù)發(fā)送編輯區(qū)的字符串
  358. str = get(hObject, 'string');
  359. %% 獲取參數(shù)isHexSend的值
  360. isHexSend = getappdata(handles.figure1, 'isHexSend');
  361. if ~isHexSend %若為ASCII值形式發(fā)送,直接將字符串轉(zhuǎn)化為對應(yīng)的數(shù)值
  362.     val = double(str);
  363. else  %若為十六進(jìn)制發(fā)送,獲取要發(fā)送的數(shù)據(jù)
  364.     n = find(str == ' ');   %查找空格
  365.     n =[0 n length(str)+1]; %空格的索引值
  366.     %% 每兩個相鄰空格之間的字符串為數(shù)值的十六進(jìn)制形式,將其轉(zhuǎn)化為數(shù)值
  367.     for i = 1 : length(n)-1
  368.         temp = str(n(i)+1 : n(i+1)-1);  %獲得每段數(shù)據(jù)的長度,為數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制做準(zhǔn)備
  369.         if ~rem(length(temp), 2)
  370.             b{i} = reshape(temp, 2, [])'; %將每段十六進(jìn)制字符串轉(zhuǎn)化為單元數(shù)組
  371.         else
  372.             break;
  373.         end
  374.     end
  375.     val = hex2dec(b)';     %將十六進(jìn)制字符串轉(zhuǎn)化為十進(jìn)制數(shù),等待寫入串口
  376. end
  377. %% 更新要顯示的數(shù)據(jù)
  378. set(hObject, 'UserData', val);


  379. % --- Executes on button press in ADplot.
  380. function ADplot_Callback(hObject, eventdata, handles)
  381. %
  382. % fid=fopen('ysw.txt','r'); %以只讀方式打開文件
  383. % value=textscan(fid,'%s'); %讀取其中的數(shù)據(jù)
  384. global value
  385. if value
  386.     load ysw.mat
  387.     value1=textscan(value,'%s'); %讀取其中的數(shù)據(jù)
  388.     % value=textscan(ysw,'%s'); %讀取其中的數(shù)據(jù)
  389.     value2=value1{1};%得到數(shù)據(jù),存儲到value1中
  390.     num=length(value2);
  391.     val=[];
  392.     for ii=1:2:num-1
  393.         val=[val,hex2dec(strcat(value2{ii},value2{ii+1}))];%轉(zhuǎn)換
  394.     end

  395.     plot(val,'DisplayName','val','YDataSource','val');figure(gcf)

  396.     axes(handles.plotAD);
  397. end

  398. % --- Executes on button press in save_data.
  399. function save_data_Callback(hObject, eventdata, handles)
  400. global value
  401. % save('ADdata.txt','val');
  402. close(figure(1))
  403. m=msgbox('              數(shù)據(jù)已保存!','提示');
  404. pause(1);delete(m);
  405. guidata(hObject,handles);
復(fù)制代碼

所有資料51hei提供下載:
serial_communication2.rar (17.46 KB, 下載次數(shù): 44)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:669746 發(fā)表于 2019-12-21 13:05 | 只看該作者
請問樓主大大,圖像顯示部分,想要把單位換成dB,怎么改呀,謝謝
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜爱爱网 | 亚洲一区 | 久久99蜜桃综合影院免费观看 | 91精品久久久久久久久中文字幕 | 一区二区视频免费观看 | 欧洲一区视频 | 亚洲手机视频在线 | 91视频大全 | 日本大香伊一区二区三区 | 国产伦精品一区二区三区精品视频 | 久久精品中文字幕 | 免费观看av | 欧美激情视频一区二区三区在线播放 | 免费在线观看成人 | 欧美久久一级 | 成人九区| 欧美一区二区三区在线播放 | 久久天天| 国产亚洲精品久久久优势 | 久在线视频播放免费视频 | 最新中文在线视频 | 亚洲日本欧美日韩高观看 | 一级大片 | 男女网站免费观看 | 91一区二区 | 国产在线一区二区三区 | 看片91 | 久久久久久亚洲精品 | 黄色福利 | 作爱视频免费看 | 久草新在线 | 亚洲精品乱码久久久久久按摩观 | a视频在线观看 | 午夜av电影院| 激情欧美一区二区三区中文字幕 | 国产日韩欧美在线 | 国产 欧美 日韩 一区 | 麻豆国产一区二区三区四区 | 国产精品久久毛片av大全日韩 | 久久精品视频99 | a中文在线视频 |