Rs232錯誤 |
尚未結案
|
b09101015
一般會員 發表:4 回覆:11 積分:3 註冊:2011-01-21 發送簡訊給我 |
我現在使用BCB然後加上SPCOMM元件抓取RS232的資料
但是再接收數次後 就會跳出附檔的訊息 請問各位 這個有可能是什麼情況 |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
|
b09101015
一般會員 發表:4 回覆:11 積分:3 註冊:2011-01-21 發送簡訊給我 |
她顯示 是在ch = fgetc(setting);
這行會停住 當我傳送了十次左右的DATA就會跳出剛剛的訊息 是我這邊寫錯了嗎? 麻煩您幫我看一下 謝謝 [code cpp] void __fastcall TForm1::CheckBox5Click(TObject *Sender) { if(CheckBox5->Checked == true && Edit_ID->Text.Length() == 10) { int i; char ch,countx; sprintf(filename, "measure_data\\%s_measure.txt", Edit_ID->Text); FILE *setting = fopen(filename,"r"); i = 0; countx = 0; String ss = "" ; ch = 0; float aa[100][1]; do{ ch = fgetc(setting); if(ch == ',' || ch == '_' || ch == '/' || ch == 0x0D || ch == '\n') i ; switch(i) { case 6: if(ch != ',') { ss = ch; // weight } break; case 7: if(ch == ',') { /* Weight */ aa[countx][0]=StrToFloat(ss);//AnsiString(ss); if(CheckBox5->Checked == true) Series10->AddY(aa[countx][0]); countx ; ss = ""; } break; default: break; } if(i == 14) i = 0; }while(ch != EOF); } else Series10->Clear(); }[/code]
編輯記錄
b09101015 重新編輯於 2011-01-21 02:36:47, 註解 無‧
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
大致粗略看一下,建議先調整如下:
StrToFloat 改成 StrToFloatDef(ss,0) ss = ch; 改成 ss = AnsiString(ch) --> 很重要,不要以為這樣寫很癈物,因為可能會有意想不到的情形…說來話太長,照做就是。 float aa[100][1]; 改成; float aa[100][1] = {0}; StrToFloatDef(ss,0) 前面 請加入 if (countx > 100) ShowMessage("Out of boundary") // 查看是否有出界的情形。
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2011-01-21 03:00:47, 註解 無‧
|
b09101015
一般會員 發表:4 回覆:11 積分:3 註冊:2011-01-21 發送簡訊給我 |
謝謝您的指導~前面的已經沒有再跳出錯誤
可是他現在出現一樣的訊息 只是改出現在下面紅色那行 我真的找不太到問題耶@@ FILE *output; // 用來指向一個輸出的位置 sprintf(filename, "patient_data\\%s_patient.txt", Edit_ID->Text); output=fopen(filename,"w"); // 第1個參數是檔名, 第2個參數是開啟檔案的模式, w代write, t代text fprintf( output, "%s,%s\n",Edit_name->Text,Edit_patient->Text ); while(0 == fclose(output)); sprintf(filename, "measure_data\\%s_measure.txt", Edit_ID->Text); output=fopen(filename,"a"); // 第1個參數是檔名, 第2個參數是開啟檔案的模式, w代write, t代text fprintf( output, "%s_%s\n",Label_date->Caption,buf); while(0 == fclose(output)); |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
sprintf(filename, "patient_data\\%s_patient.txt", .c_str() );
注意 sprintf 與fprintf 中的 s% 是要你輸入 char* 而非 AnsiString,所以都要轉一下。 ===================引 用 b09101015 文 章=================== 謝謝您的指導~前面的已經沒有再跳出錯誤 可是他現在出現一樣的訊息 只是改出現在下面紅色那行 我真的找不太到問題耶@@ FILE *output; // 用來指向一個輸出的位置 sprintf(filename, "patient_data\\%s_patient.txt", Edit_ID->Text); output=fopen(filename,"w"); // 第1個參數是檔名, 第2個參數是開啟檔案的模式, w代write, t代text fprintf( output, "%s,%s\n",Edit_name->Text,Edit_patient->Text ); while(0 == fclose(output)); sprintf(filename, "measure_data\\%s_measure.txt", Edit_ID->Text); output=fopen(filename,"a"); // 第1個參數是檔名, 第2個參數是開啟檔案的模式, w代write, t代text fprintf( output, "%s_%s\n",Label_date->Caption,buf); while(0 == fclose(output));
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
b09101015
一般會員 發表:4 回覆:11 積分:3 註冊:2011-01-21 發送簡訊給我 |
這次又停在
fprintf( output, "%s_%s\n",Label_date->Caption,buf); 加上 Label_date->Caption.c_str() 也是一樣會停在這邊 麻煩幫我看一下了 謝謝 [code cpp] sprintf(filename, "measure_data\\%s_measure.txt", Edit_ID->Text.c_str()); output=fopen(filename,"at"); // 第1個參數是檔名, 第2個參數是開啟檔案的模式, w代write, t代text fprintf( output, "%s_%s\n",Label_date->Caption,buf); while(0 == fclose(output)); [/code] |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
1/ 一定要Label_date->Caption.c_str()
2/ 關鍵點 你的 buf 是什麼型別? 沒看到宣告 ===================引 用 b09101015 文 章=================== 這次又停在 fprintf( output, "%s_%s\n",Label_date->Caption,buf); 加上 Label_date->Caption.c_str() 也是一樣會停在這邊 麻煩幫我看一下了 謝謝 [code cpp] sprintf(filename, "measure_data\\%s_measure.txt", Edit_ID->Text.c_str()); output=fopen(filename,"at"); // 第1個參數是檔名, 第2個參數是開啟檔案的模式, w代write, t代text fprintf( output, "%s_%s\n",Label_date->Caption,buf); while(0 == fclose(output)); [/code]
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
b09101015
一般會員 發表:4 回覆:11 積分:3 註冊:2011-01-21 發送簡訊給我 |
麻煩大家幫忙一下了
我一直出現問題在 fprintf( output, "%s_%s\n",Label_date->Caption.c_str(),buf); 這一段 第12行那邊 可以麻煩大家幫我看看嗎 謝謝 [code cpp] //Edit_ID->Text = 123; unsigned char i,common[12]; double f=0.0,weight=0.0,Fat=0.0,Fatmass=0.0,FFM=0.0; double TBW=0.0,BMI=0.0; unsigned char body=0,sex=0,height=0,age=0; unsigned char index=0,index1=0; long int a=0,impedance=0,BMR=0; char *buf=(char*)Buffer; char filename[80]; sprintf(filename, "measure_data\\%s_measure.txt", Edit_ID->Text.c_str()); FILE *output=fopen(filename,"a "); // 第1個參數是檔名, 第2個參數是開啟檔案的模式, w代write, t代text fprintf( output, "%s_%s\n",Label_date->Caption.c_str(),buf); while(0 == fclose(output)); //String x; a = 0; for(i=0;i<255;i ) { if(buf[i] == 0x0A) { buf[i] = 0x00; } if(buf[i] == 0x0D) { buf[i] = '/'; } if(buf[i] == 0x2C || buf[i] == 0x5C || buf[i] == '/') { common[a] = i; a ; } } /* 體型 */ body = StrToInt(buf[0]); if(body) //Athletic { //BodyGroup->ItemIndex = 1; Image_Body_normal->Visible = false; Image_Body_Ath->Visible = true; } else //normal { //BodyGroup->ItemIndex = 0; Image_Body_normal->Visible = true; Image_Body_Ath->Visible = false; } /* 性別 */ sex = StrToInt(buf[2]); if(sex) //man { Image_Sex_Woman->Visible = false; Image_Sex_Man->Visible = true; } else //female { //SexGroup->ItemIndex = 1; Image_Sex_Woman->Visible = true; Image_Sex_Man->Visible = false; } /* 身高 */ index = common[1]; index1 = common[2]; a = 100; height = 0; for(i = index 1 ; i height = a*StrToInt(buf[i]); a = a/10; } Edit_height->Text = height; /* 體重 */ index = common[2]; index1 = common[3]; weight = 0.0; if((index1-index) == 6) f = 100.0; else f = 10.0; for(i = index 1 ; i if(i != (index1-2)) { weight = f*StrToInt(buf[i]); f = f/10.0; } } Edit_weight->Text = FloatToStrF( weight , ffFixed , 7 , 1 ); Series1->AddY(weight); /* 阻抗 */ index = common[3]; index1 = common[4]; impedance = 0.0; if((index1-index) == 4) a = 100; else if((index1-index) == 5) a = 1000; else a = 10; for(i = index 1 ; i impedance = a*StrToInt(buf[i]); a = a/10; } Edit_imp->Text = impedance; Series2->AddY(impedance); /* 體脂肪率 */ index = common[4]; index1 = common[5]; Fat = 0.0; if((index1-index) == 4) f = 1.0; else f = 10.0; for(i = index 1 ; i if(i != (index1-2)) { Fat = f*StrToInt(buf[i]); f = f/10.0; } } Edit_Fat->Text = FloatToStrF( Fat , ffFixed , 7 , 1 ); Series10->AddY(Fat); /* 體脂肪體積 */ index = common[5]; index1 = common[6]; Fatmass = 0.0; if((index1-index) == 4) f = 1.0; else f = 10.0; for(i = index 1 ; i if(i != (index1-2)) { Fatmass = f*StrToInt(buf[i]); f = f/10.0; } } Edit_Fatmass->Text = FloatToStrF( Fatmass , ffFixed , 7 , 1 ); Series6->AddY(Fatmass); /* FFM */ index = common[6]; index1 = common[7]; FFM = 0.0; if((index1-index) == 4) f = 1.0; else f = 10.0; for(i = index 1 ; i if(i != (index1-2)) { FFM = f*StrToInt(buf[i]); f = f/10.0; } } Edit_FFM->Text = FloatToStrF( FFM , ffFixed , 7 , 1 ); Series7->AddY(FFM); /* TBW */ index = common[7]; index1 = common[8]; TBW = 0.0; if((index1-index) == 4) f = 1.0; else f = 10.0; for(i = index 1 ; i if(i != (index1-2)) { TBW = f*StrToInt(buf[i]); f = f/10.0; } } Edit_TBW->Text = FloatToStrF( TBW , ffFixed , 7 , 1 ); Series8->AddY(TBW); /* 年齡 */ index = common[8]; index1 = common[9]; age = 0; if((index1-index) == 3) a = 10; else a = 1; for(i = index 1 ; i age = a*StrToInt(buf[i]); a = a/10; } Edit_age->Text = age; /* BMI */ index = common[9]; index1 = common[10]; BMI = 0.0; if((index1-index) == 4) f = 1.0; else f = 10.0; for(i = index 1 ; i if(i != (index1-2)) { BMI = f*StrToInt(buf[i]); f = f/10.0; } } Edit_BMI->Text = FloatToStrF( BMI , ffFixed , 7 , 1 ); Series9->AddY(BMI); /* BMR */ index = common[10]; index1 = common[11]; //Edit3->Text BMR = 0; if((index1-index) == 4) a = 100; else if((index1-index) == 5) a = 1000; else a = 10; for(i = index 1 ; i BMR = a*StrToInt(buf[i]); a = a/10; } Edit_BMR->Text = BMR; Series4->AddY(BMR); AnsiString temp; //sprintf(dd, "%s.txt", Edit_ID->Text.c_str()); temp = AnsiString(Label_date->Caption.c_str()); temp = "_"; temp = AnsiString(buf); //Memo1->Lines->Add(Label_date->Caption); //Memo1->Lines->Add(" "); //Memo1->Lines->Text = buf; Memo1->Lines->Add(temp); while(Memo1->Lines->Count >= StrToInt(Edit4->Text) 1) { //Edit_age->Text = "123"; Memo1->Lines->Delete(0); LineOver = 1; //Memo1->Lines->LoadFromFile(filename); } //FILE *output; // 用來指向一個輸出的位置 if(ID_change || Start) { Start = 0; ID_change = 0; sprintf(filename, "patient_data\\%s_patient.txt", Edit_ID->Text.c_str()); output=fopen(filename,"wt"); // 第1個參數是檔名, 第2個參數是開啟檔案的模式, w代write, t代text fprintf( output, "%s,%s\n",Edit_name->Text,Edit_patient->Text.c_str() ); while(0 == fclose(output)); } if(LineOver) { sprintf(filename, "measure_data\\%s_measure.txt", Edit_ID->Text.c_str()); output=fopen(filename,"wt"); // 第1個參數是檔名, 第2個參數是開啟檔案的模式, w代write, t代text for(i=0;i { fprintf( output, "",Memo1->Lines->Strings[i].c_str()); } while(0 == fclose(output)); output=fopen(filename,"a "); // 第1個參數是檔名, 第2個參數是開啟檔案的模式, w代write, t代text for(i=0;i { fprintf( output, "%s\n",Memo1->Lines->Strings[i].c_str() ); } while(0 == fclose(output)); Memo1->Lines->LoadFromFile(filename); LineOver = 0; } Timer2->Enabled = false; Timer2->Enabled = true; if(CheckBox1->Checked == false) Series1->Clear(); else { CheckBox1->Checked = false; CheckBox1->Checked = true; } if(CheckBox2->Checked == false) Series2->Clear(); else { CheckBox2->Checked = false; CheckBox2->Checked = true; } if(CheckBox3->Checked == false) Series9->Clear(); else { CheckBox3->Checked = false; CheckBox3->Checked = true; } if(CheckBox4->Checked == false) Series4->Clear(); else { CheckBox4->Checked = false; CheckBox4->Checked = true; } if(CheckBox5->Checked == false) Series10->Clear(); else { CheckBox5->Checked = false; CheckBox5->Checked = true; } if(CheckBox6->Checked == false) Series6->Clear(); else { CheckBox6->Checked = false; CheckBox6->Checked = true; } if(CheckBox7->Checked == false) Series7->Clear(); else { CheckBox7->Checked = false; CheckBox7->Checked = true; } if(CheckBox8->Checked == false) Series8->Clear(); else { CheckBox8->Checked = false; CheckBox8->Checked = true; } if(close) {Close();} }
編輯記錄
b09101015 重新編輯於 2011-01-25 19:29:27, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |