瀏覽單個文章
dragon30
Major Member
 

加入日期: Feb 2004
您的住址: 貧民窟
文章: 198
引用:
作者edison72
一般來說,.NET的串列效率沒有那麼差,我案子都是用胞率115200了,你應該檢查你的串列程式寫法,看是不是有BUG或是用到效率很差的方法,導致CPU負載100%


其實
我也在想是不是我的程式效率太差造成的
我現在也只是算會寫
但離寫得好還有一大段路要走
我把我的程式附上來好了
希望各位能給我一些意見
看看怎麼寫可以讓執行效率更好

以下程式是用VC++ 2008 Windows Form 架構寫的
僅擷取 SerialPort 接收部分
===================================
private: System::Void SerialPort_1_DataReceived(System::Object^ sender,System::IO::Ports::SerialDataReceivedEventArgs^ e) {
ser_data_00 = ser_data_01;
ser_data_01 = ser_data_02;
ser_data_02 = ser_data_03;
ser_data_03 = ser_data_04;
ser_data_04 = ser_data_05;
ser_data_05 = ser_data_06;
ser_data_06 = ser_data_07;
ser_data_07 = ser_data_08;
ser_data_08 = ser_data_09;
ser_data_09 = ser_data_10;
ser_data_10 = ser_data_11;
ser_data_11 = ser_data_12;
ser_data_12 = ser_data_13;
ser_data_13 = SerialPort_1->ReadByte();

if((ser_data_00 == 65)&(ser_data_13 == 90)){
A_data = (((ser_data_01*256)+ser_data_02)-512);
B_data = (((ser_data_03*256)+ser_data_04)-512);
C_data = (((ser_data_05*256)+ser_data_06)-512);
D_data = (((ser_data_07*256)+ser_data_08)-512);
E_data = (((ser_data_09*256)+ser_data_10)-512);
F_data = (((ser_data_11*256)+ser_data_12)-512);
data_cnt = data_cnt + 1;
Data_Matrix->A_m[data_cnt] = A_data;
Data_Matrix->B_m[data_cnt] = B_data;
Data_Matrix->C_m[data_cnt] = C_data;
Data_Matrix->D_m[data_cnt] = D_data;
Data_Matrix->E_m[data_cnt] = E_data;
Data_Matrix->F_m[data_cnt] = F_data;}
}
===================================
接收到的資料儲存到A_m,B_m....的矩陣內
舊 2009-01-19, 08:16 PM #9
回應時引用此文章
dragon30離線中