Cubiscan Emulator
Dependencies: PinDetect TimeZone mbed
main.cpp
00001 /************************************************** 00002 * Cubiscan Emulator * 00003 * Montra * 00004 * Author: Arturo Alvarado Troncoso * 00005 * junio del 2016 * 00006 **************************************************/ 00007 00008 #include "mbed.h" 00009 #include "PinDetect.h" 00010 #include "Time.h" 00011 //Constants definition 00012 #define STX 2 00013 #define ETX 3 00014 #define CR 13 00015 #define LF 10 00016 00017 //Pc serial connection 00018 Serial pc(USBTX,USBRX); 00019 PinDetect measureBtn(PTD4); 00020 PinDetect dimBtn(PTA12); 00021 PinDetect wBtn(PTA4); 00022 PinDetect ErrorBtn(PTA5); 00023 //DIP SWITCH 00024 DigitalIn Dip1(PTC13);//CubiScan 100L 00025 DigitalIn Dip2(PTC12);//CubiScan 125 00026 DigitalIn Dip3(PTC11);//CubiScan 150 00027 DigitalIn Dip4(PTC10);//CubiScan 200TS protocol 1 00028 DigitalIn Dip5(PTC6);//CubiScan 200TS protocol 2 00029 DigitalIn Dip6(PTC5); 00030 DigitalIn Dip7(PTC4); 00031 DigitalIn Dip8(PTC3); 00032 00033 char dimUnitsValue = 'M'; 00034 char wUnitsValue = 'M'; 00035 char factor = 'D';//dom 166 int 139 lb 6000 iny 5000 kg 00036 char id[7]=" "; 00037 int MeasureNumber=0; 00038 int ErrorNum =0; 00039 //Funtions prototypes 00040 int Cycle=0; 00041 Ticker tick; 00042 void dimensionCalibration(char* command); 00043 char dimensionUnits(char* command); 00044 char factorToggle(char* command); 00045 void locationId(char* command); 00046 void measure(char* command); 00047 void scaleCalibration(char* command); 00048 void test(char* command); 00049 void units(char* command); 00050 void values(char* command); 00051 char weightUnits(char* command); 00052 void zero(char* commmand); 00053 void measureCom(void); 00054 void measureCom2(void); 00055 void measureCom2TS(void); 00056 void itoa(int n,char s[]); 00057 void printString(char * str); 00058 void changeWUnits(void); 00059 void changeDUnits(void); 00060 void ErrorGen(void); 00061 void measureCom2Cycle(void){ 00062 if(Cycle == 0){ 00063 Cycle=1; 00064 tick.attach(&measureCom2, 3.0); 00065 } 00066 else{ 00067 Cycle=0; 00068 tick.detach(); 00069 } 00070 00071 } 00072 int main() 00073 { 00074 00075 time_t t; 00076 srand((unsigned) time(&t)); 00077 char command[12]; 00078 measureBtn.setSampleFrequency(); 00079 dimBtn.setSampleFrequency(); 00080 wBtn.setSampleFrequency(); 00081 ErrorBtn.setSampleFrequency(); 00082 00083 while(1) { 00084 if((!Dip1)||(!Dip2)||(!Dip3)) { 00085 measureBtn.attach_asserted(&measureCom); 00086 wBtn.attach_asserted(&changeWUnits); 00087 dimBtn.attach_asserted(&changeDUnits); 00088 strcpy(command,""); 00089 fgets(command,12,stdin); 00090 if(command[0]==STX) { 00091 00092 if(command[1]=='D') { 00093 dimensionCalibration(command); 00094 }//end if 00095 else if(command[1]=='"') { 00096 dimUnitsValue=dimensionUnits(command); 00097 }//end else if 00098 else if(command[1]=='F') { 00099 factor = factorToggle(command); 00100 }//end else if 00101 else if(command[1]=='L') { 00102 locationId(command); 00103 }//end else if 00104 else if(command[1]=='M') { 00105 measure(command); 00106 }//end else if 00107 else if(command[1]=='S') { 00108 scaleCalibration(command); 00109 }//end else if 00110 else if(command[1]=='T') { 00111 test(command); 00112 00113 } else if(command[1]=='U') { 00114 units(command); 00115 00116 }//end if 00117 else if(command[1]=='V') { 00118 values(command); 00119 00120 }//end if 00121 else if(command[1]=='#') { 00122 wUnitsValue= weightUnits(command); 00123 00124 }//end if 00125 else if(command[1]=='Z') { 00126 zero(command); 00127 00128 }///end if 00129 00130 }//end if 00131 00132 }//end if 00133 else if(!Dip4) { 00134 measureBtn.attach_asserted(&measureCom2Cycle); 00135 wBtn.attach_asserted(&changeWUnits); 00136 dimBtn.attach_asserted(&changeDUnits); 00137 ErrorBtn.attach_asserted(&ErrorGen); 00138 } else if(!Dip5) { 00139 measureBtn.attach_asserted(&measureCom2TS); 00140 wBtn.attach_asserted(&changeWUnits); 00141 dimBtn.attach_asserted(&changeDUnits); 00142 ErrorBtn.attach_asserted(&ErrorGen); 00143 00144 } 00145 }//end while 00146 }//end main 00147 00148 00149 /********************************************************* 00150 * * 00151 * Command Functions * 00152 * * 00153 **********************************************************/ 00154 /* 00155 *Dimension Calibration 00156 * 00157 *This function is required when one of the sensors is replaced or 00158 *moved, when a new controller is intalled , or for routine calibration. 00159 *This command causes the CubiScan to reply with a dimension calibratopn codea each time it s issued. 00160 *This command must be issued SIX time to complete sensor calibration. 00161 */ 00162 void dimensionCalibration(char* command) 00163 { 00164 char respond[9]= {' '}; 00165 00166 if(command[2]== ETX) { 00167 respond[0]= STX; 00168 respond[1]= 'D'; 00169 respond[2]='A'; 00170 respond[3]='0'; 00171 respond[4]='0'; 00172 respond[5]= ETX; 00173 respond[6]=CR; 00174 respond[7]=LF; 00175 respond[8]='\0'; 00176 } else { 00177 respond[0]=STX; 00178 respond[1]='D'; 00179 respond[2]='N'; 00180 respond[3]=ETX; 00181 respond[4]=CR; 00182 respond[5]=LF; 00183 respond[6]='\0'; 00184 } 00185 printString(respond); 00186 }//end dimensionCalibration 00187 00188 00189 /* 00190 *Dimension Units 00191 * 00192 *This command is used to set the dimension units to either English(inches) 00193 *or metric (centimeters) mode. 00194 * 00195 */ 00196 char dimensionUnits(char* command) 00197 { 00198 char respond[7]; 00199 char newUnits; 00200 if((command[3]== ETX)&&(command[4]== CR)&&(command[5]== LF)&&((command[2]=='M')||(command[2]=='E'))) { 00201 respond[0]=STX; 00202 respond[1]='"'; 00203 respond[2]='A'; 00204 respond[3]=ETX; 00205 respond[4]=CR; 00206 respond[5]=LF; 00207 respond[6]='\0'; 00208 newUnits = command[2]; 00209 }//end if 00210 else { 00211 respond[0]=STX; 00212 respond[1]='"'; 00213 respond[2]='N'; 00214 respond[3]=ETX; 00215 respond[4]=CR; 00216 respond[5]=LF; 00217 respond[6]='\0'; 00218 newUnits = dimUnitsValue; 00219 }//end else 00220 00221 printString(respond); 00222 return newUnits; 00223 }//end dimensionUnits 00224 00225 00226 /* 00227 *Factor Toggle 00228 * 00229 *This command is used to set the dimensional factor to either 00230 *domestic or international. 00231 */ 00232 char factorToggle(char* command) 00233 { 00234 char respond[7]; 00235 int newFactor; 00236 if((command[3]== ETX)&&(command[4]== CR)&&(command[5]== LF)&&((command[2]=='I')||(command[2]=='D'))) { 00237 respond[0]=STX; 00238 respond[1]='F'; 00239 respond[2]='A'; 00240 respond[3]=ETX; 00241 respond[4]=CR; 00242 respond[5]=LF; 00243 respond[6]='\0'; 00244 00245 newFactor=command[2]; 00246 00247 }//end if 00248 else { 00249 respond[0]=STX; 00250 respond[1]='F'; 00251 respond[2]='N'; 00252 respond[3]=ETX; 00253 respond[4]=CR; 00254 respond[5]=LF; 00255 respond[6]='\0'; 00256 00257 newFactor = factor; 00258 }//end else 00259 pc.puts(respond); 00260 return newFactor; 00261 00262 }//end factorToggle 00263 00264 /* 00265 *Location Id/City Code 00266 * 00267 *This command is used to set the CubiScan location identification. 00268 *This data is stored in permanent memory and need only be set once 00269 *for each Cubiscan 00270 */ 00271 void locationId(char* command) 00272 { 00273 char respond[7]; 00274 if((command[8]== ETX)&&(command[9]== CR)&&(command[10]== LF)) { 00275 respond[0]=STX; 00276 respond[1]='L'; 00277 respond[2]='A'; 00278 respond[3]=ETX; 00279 respond[4]=CR; 00280 respond[5]=LF; 00281 respond[6]='\0'; 00282 00283 id[0]=command[2]; 00284 id[1]=command[3]; 00285 id[2]=command[4]; 00286 id[3]=command[5]; 00287 id[4]=command[6]; 00288 id[5]=command[7]; 00289 00290 }//end if 00291 else { 00292 respond[0]=STX; 00293 respond[1]='L'; 00294 respond[2]='N'; 00295 respond[3]=ETX; 00296 respond[4]=CR; 00297 respond[5]=LF; 00298 respond[6]='\0'; 00299 00300 00301 }//end else 00302 printString(respond); 00303 00304 }//end locationId 00305 00306 void measure(char* command) 00307 { 00308 char medidasCm[5][4]= {{'1','0','0','0'},{' ','9','8','2'}, 00309 {' ',' ','8','3'},{' ','3','4','8'}, 00310 {' ','7','6','4'} 00311 }; 00312 char medidasIn[5][4]= {{' ','3','9','3'},{' ','3','8','6'}, 00313 {' ',' ','3','3'},{' ','1','3','7'}, 00314 {' ','3','0','0'} 00315 }; 00316 char pesoLb[6][5]= {{'1','5','0','0','0'},{' ','7','9','1','5'}, 00317 {' ','6','3','2','5'} 00318 }; 00319 00320 char pesoKg[3][5]= {{' ','6','8','0','3'},{' ','3','5','9','0'}, 00321 {' ','2','8','6','8'} 00322 }; 00323 00324 char dimLbD[3][5]= {{' ','2','9','7','6'},{' ','1','0','4','0'},{' ',' ','8','0','9'}}; 00325 char dimLbI[3][5]= {{' ','3','6','3','7'},{' ','1','3','2','2'},{' ',' ','9','9','2'}}; 00326 00327 char dimKgD[3][5]= {{' ','1','3','5','0'},{' ',' ','4','7','2'},{' ',' ','3','6','7'}}; 00328 char dimKgI[3][5]= {{' ','1','6','5','0'},{' ',' ','6','0','0'},{' ',' ','4','5','0'}}; 00329 int token = rand()%2; 00330 char respond[63]= {' '}; 00331 if(command[2]==ETX) { 00332 respond[0]=STX; 00333 respond[1]='M'; 00334 respond[2]='A'; 00335 respond[3]='H'; 00336 respond[4]=id[0]; 00337 respond[5]=id[1]; 00338 respond[6]=id[2]; 00339 respond[7]=id[3]; 00340 respond[8]=id[4]; 00341 respond[9]=id[5]; 00342 respond[10]=','; 00343 if(dimUnitsValue=='E') { 00344 respond[11]='L'; 00345 respond[12]=medidasIn[token][0]; 00346 respond[13]=medidasIn[token][1]; 00347 respond[14]=medidasIn[token][2]; 00348 respond[15]='.'; 00349 respond[16]=medidasIn[token][3]; 00350 respond[17]=','; 00351 respond[18]='W'; 00352 respond[19]=medidasIn[token+1][0]; 00353 respond[20]=medidasIn[token+1][1]; 00354 respond[21]=medidasIn[token+1][2]; 00355 respond[22]='.'; 00356 respond[23]=medidasIn[token+1][3]; 00357 respond[24]=','; 00358 respond[25]='H'; 00359 respond[26]=medidasIn[token+2][0]; 00360 respond[27]=medidasIn[token+2][1]; 00361 respond[28]=medidasIn[token+2][2]; 00362 respond[29]='.'; 00363 respond[30]=medidasIn[token+2][3]; 00364 } else { 00365 respond[11]='L'; 00366 respond[12]=medidasCm[token][0]; 00367 respond[13]=medidasCm[token][1]; 00368 respond[14]=medidasCm[token][2]; 00369 respond[15]='.'; 00370 respond[16]=medidasCm[token][3]; 00371 respond[17]=','; 00372 respond[18]='W'; 00373 respond[19]=medidasCm[token+1][0]; 00374 respond[20]=medidasCm[token+1][1]; 00375 respond[21]=medidasCm[token+1][2]; 00376 respond[22]='.'; 00377 respond[23]=medidasCm[token+1][3]; 00378 respond[24]=','; 00379 respond[25]='H'; 00380 respond[26]=medidasCm[token+2][0]; 00381 respond[27]=medidasCm[token+2][1]; 00382 respond[28]=medidasCm[token+2][2]; 00383 respond[29]='.'; 00384 respond[30]=medidasCm[token+2][3]; 00385 } 00386 if(wUnitsValue=='E') { 00387 respond[31]=','; 00388 respond[32]=dimUnitsValue; 00389 respond[33]=','; 00390 respond[34]='K'; 00391 respond[35]=pesoLb[token][0]; 00392 respond[36]=pesoLb[token][1]; 00393 respond[37]=pesoLb[token][2]; 00394 respond[38]='.'; 00395 respond[39]=pesoLb[token][3]; 00396 respond[40]=pesoLb[token][4]; 00397 respond[41]=','; 00398 if(factor=='D') { 00399 respond[42]='D'; 00400 respond[43]=dimLbD[token][0]; 00401 respond[44]=dimLbD[token][1]; 00402 respond[45]=dimLbD[token][2]; 00403 respond[46]='.'; 00404 respond[47]=dimLbD[token][3]; 00405 respond[48]=dimLbD[token][4]; 00406 respond[49]=','; 00407 respond[50]=wUnitsValue; 00408 respond[51]=','; 00409 respond[52]='F'; 00410 respond[53]=' '; 00411 respond[54]='1'; 00412 respond[55]='6'; 00413 respond[56]='6'; 00414 respond[57]=','; 00415 } else { 00416 respond[42]='D'; 00417 respond[43]=dimLbI[token][0]; 00418 respond[44]=dimLbI[token][1]; 00419 respond[45]=dimLbI[token][2]; 00420 respond[46]='.'; 00421 respond[47]=dimLbI[token][3]; 00422 respond[48]=dimLbI[token][4]; 00423 respond[49]=','; 00424 respond[50]=wUnitsValue; 00425 respond[51]=','; 00426 respond[52]='F'; 00427 respond[53]=' '; 00428 respond[54]='1'; 00429 respond[55]='3'; 00430 respond[56]='9'; 00431 respond[57]=','; 00432 } 00433 } else { 00434 respond[31]=','; 00435 respond[32]=dimUnitsValue; 00436 respond[33]=','; 00437 respond[34]='K'; 00438 respond[35]=pesoKg[token][0]; 00439 respond[36]=pesoKg[token][1]; 00440 respond[37]=pesoKg[token][2]; 00441 respond[38]='.'; 00442 respond[39]=pesoKg[token][3]; 00443 respond[40]=pesoKg[token][4]; 00444 respond[41]=','; 00445 if(factor=='D') { 00446 respond[42]='D'; 00447 respond[43]=dimKgD[token][0]; 00448 respond[44]=dimKgD[token][1]; 00449 respond[45]=dimKgD[token][2]; 00450 respond[46]='.'; 00451 respond[47]=dimKgD[token][3]; 00452 respond[48]=dimKgD[token][4]; 00453 respond[49]=','; 00454 respond[50]=wUnitsValue; 00455 respond[51]=','; 00456 respond[52]='F'; 00457 respond[53]='6'; 00458 respond[54]='0'; 00459 respond[55]='0'; 00460 respond[56]='0'; 00461 respond[57]=','; 00462 } else { 00463 respond[42]='D'; 00464 respond[43]=dimKgI[token][0]; 00465 respond[44]=dimKgI[token][1]; 00466 respond[45]=dimKgI[token][2]; 00467 respond[46]='.'; 00468 respond[47]=dimKgI[token][3]; 00469 respond[48]=dimKgI[token][4]; 00470 respond[49]=','; 00471 respond[50]=wUnitsValue; 00472 respond[51]=','; 00473 respond[52]='F'; 00474 respond[53]='5'; 00475 respond[54]='0'; 00476 respond[55]='0'; 00477 respond[56]='0'; 00478 respond[57]=','; 00479 } 00480 } 00481 respond[58]=factor; 00482 respond[59]=ETX; 00483 respond[60]=CR; 00484 respond[61]=LF; 00485 respond[62]='\0'; 00486 }//end if 00487 else { 00488 respond[0] = STX; 00489 respond[1] = 'M'; 00490 respond[2] = 'N'; 00491 respond[3] = 'H'; 00492 respond[4] = 'M'; 00493 respond[5] = ETX; 00494 respond[6] = CR; 00495 respond[7] = LF; 00496 respond[8] = '\0'; 00497 }//end else 00498 printString(respond); 00499 }//end measure 00500 00501 00502 /* 00503 *Scale Calibration 00504 * 00505 *This fuction is requiered when the load cell s replaced, 00506 *when a new controller is installed, or for routine calibration. 00507 *This command causes the CubiScan to reply with a scale calibration code. 00508 *This command must be issued THREE times to complete scale calibration. 00509 */ 00510 void scaleCalibration(char* command) 00511 { 00512 char respond[8]; 00513 if((command[2]== ETX)&&(command[3]== CR)&&(command[4]== LF)) { 00514 respond[0]=STX; 00515 respond[1]='S'; 00516 respond[2]='A'; 00517 respond[3]='0'; 00518 respond[4]='0'; 00519 respond[5]= ETX; 00520 respond[6]=CR; 00521 respond[7]=LF; 00522 } else { 00523 respond[0]=STX; 00524 respond[1]='S'; 00525 respond[2]='N'; 00526 respond[3]=ETX; 00527 respond[4]=CR; 00528 respond[5]=LF; 00529 } 00530 printString(respond); 00531 }//end scaleCalibration 00532 00533 /* 00534 *Test 00535 * 00536 *This command couses the CubiScan to reply with an error code. 00537 *A response of TA00 means that the CubiScan is ready and responding t transmission from the host. 00538 *if the host recieves no response from the contro unit after sendingg this command, 00539 *an error condition exists in the communications etween the host and the controller. 00540 */ 00541 void test(char* command) 00542 { 00543 char respond[9]; 00544 if((command[2]== ETX)&&(command[3]== CR)&&(command[4]== LF)) { 00545 respond[0]=STX; 00546 respond[1]='T'; 00547 respond[2]='A'; 00548 respond[3]='0'; 00549 respond[4]='0'; 00550 respond[5]= ETX; 00551 respond[6]=CR; 00552 respond[7]=LF; 00553 respond[8]='\0'; 00554 } else { 00555 respond[0]=STX; 00556 respond[1]='T'; 00557 respond[2]='N'; 00558 respond[3]=ETX; 00559 respond[4]=CR; 00560 respond[5]=LF; 00561 respond[6]='\0'; 00562 } 00563 //pc.puts(respond); 00564 printString(respond); 00565 }//end test 00566 00567 00568 00569 /* 00570 *Units 00571 * 00572 *This command causes the CubiScan to repot its 00573 *current modes of operation. 00574 */ 00575 void units(char* command) 00576 { 00577 char respond[20]; 00578 if((command[2]== ETX)&&(command[3]== CR)&&(command[4]== LF)) { 00579 if(factor=='D') { 00580 respond[0]=STX; 00581 respond[1]='U'; 00582 respond[2]='A'; 00583 respond[3]=dimUnitsValue; 00584 respond[4]=wUnitsValue; 00585 respond[5]='D'; 00586 respond[6]=' '; 00587 respond[7]='1'; 00588 respond[8]='6'; 00589 respond[9]='6'; 00590 respond[10]=id[0]; 00591 respond[11]=id[1]; 00592 respond[12]=id[2]; 00593 respond[13]=id[3]; 00594 respond[14]=id[4]; 00595 respond[15]=id[5]; 00596 respond[16]=ETX; 00597 respond[17]=CR; 00598 respond[18]=LF; 00599 respond[19]='\0'; 00600 } else { 00601 respond[0]=STX; 00602 respond[1]='U'; 00603 respond[2]='A'; 00604 respond[3]=dimUnitsValue; 00605 respond[4]=wUnitsValue; 00606 respond[5]='I'; 00607 respond[6]=' '; 00608 respond[7]='1'; 00609 respond[8]='3'; 00610 respond[9]='9'; 00611 respond[10]=id[0]; 00612 respond[11]=id[1]; 00613 respond[12]=id[2]; 00614 respond[13]=id[3]; 00615 respond[14]=id[4]; 00616 respond[15]=id[5]; 00617 respond[16]=ETX; 00618 respond[17]=CR; 00619 respond[18]=LF; 00620 respond[19]='\0'; 00621 00622 } 00623 } else { 00624 respond[0]=STX; 00625 respond[1]='U'; 00626 respond[2]='N'; 00627 respond[3]=ETX; 00628 respond[4]=CR; 00629 respond[5]=LF; 00630 respond[6]='\0'; 00631 } 00632 printString(respond); 00633 }//end units 00634 00635 /** 00636 *Values 00637 * 00638 *This command causes the CubiScan to report all of itrs internal 00639 *paraneters. This is useful for troubleshooting. 00640 */ 00641 void values(char* command) 00642 { 00643 char respond[157]; 00644 if((command[2]== ETX)&&(command[3]== CR)&&(command[4]== LF)) { 00645 respond[0]=STX; 00646 respond[1]='V'; 00647 respond[2]='A'; 00648 respond[3]='0'; 00649 respond[4]='0'; 00650 respond[5]='.'; 00651 respond[6]='0'; 00652 respond[7]=','; 00653 respond[8]='0'; 00654 respond[9]='0'; 00655 respond[10]='.'; 00656 respond[11]='0'; 00657 respond[12]=','; 00658 respond[13]='0'; 00659 respond[14]='0'; 00660 respond[15]='.'; 00661 respond[16]='0'; 00662 respond[17]=','; 00663 respond[18]='0'; 00664 respond[19]='0'; 00665 respond[20]='.'; 00666 respond[21]='0'; 00667 respond[22]=','; 00668 respond[23]='0'; 00669 respond[24]='0'; 00670 respond[25]='0'; 00671 respond[26]='0'; 00672 respond[27]=','; 00673 respond[28]='0'; 00674 respond[29]='0'; 00675 respond[30]='0'; 00676 respond[31]='0'; 00677 respond[32]=','; 00678 respond[33]='0'; 00679 respond[34]='0'; 00680 respond[35]='0'; 00681 respond[36]='0'; 00682 respond[37]=','; 00683 respond[38]='0'; 00684 respond[39]='0'; 00685 respond[40]='0'; 00686 respond[41]='0'; 00687 respond[42]=','; 00688 respond[43]='0'; 00689 respond[44]='0'; 00690 respond[45]='.'; 00691 respond[46]='0'; 00692 respond[47]=','; 00693 respond[48]='0'; 00694 respond[49]='0'; 00695 respond[50]='.'; 00696 respond[51]='0'; 00697 respond[52]=','; 00698 respond[53]='0'; 00699 respond[54]='0'; 00700 respond[55]='.'; 00701 respond[56]='0'; 00702 respond[57]=','; 00703 respond[58]='0'; 00704 respond[59]='0'; 00705 respond[60]='.'; 00706 respond[61]='0'; 00707 respond[62]=','; 00708 respond[63]='0'; 00709 respond[64]='0'; 00710 respond[65]='.'; 00711 respond[66]='0'; 00712 respond[67]=','; 00713 respond[68]='0'; 00714 respond[69]='0'; 00715 respond[70]='.'; 00716 respond[71]='0'; 00717 respond[72]=','; 00718 respond[73]='0'; 00719 respond[74]='0'; 00720 respond[75]='.'; 00721 respond[76]='0'; 00722 respond[77]=','; 00723 respond[78]='0'; 00724 respond[79]='0'; 00725 respond[80]='.'; 00726 respond[81]='0'; 00727 respond[82]=','; 00728 respond[83]='0'; 00729 respond[84]='0'; 00730 respond[85]=','; 00731 respond[86]='0'; 00732 respond[87]='0'; 00733 respond[88]=','; 00734 respond[89]='0'; 00735 respond[90]='0'; 00736 respond[91]=','; 00737 respond[92]='0'; 00738 respond[93]='0'; 00739 respond[94]=','; 00740 respond[95]='0'; 00741 respond[96]='0'; 00742 respond[97]='0'; 00743 respond[98]=','; 00744 respond[99]='0'; 00745 respond[100]='0'; 00746 respond[101]='0'; 00747 respond[102]=','; 00748 respond[103]='0'; 00749 respond[104]='0'; 00750 respond[105]='0'; 00751 respond[106]=','; 00752 respond[107]='0'; 00753 respond[108]='0'; 00754 respond[109]='0'; 00755 respond[110]=','; 00756 respond[111]='1'; 00757 respond[112]='0'; 00758 respond[113]='0'; 00759 respond[114]='L'; 00760 respond[115]=','; 00761 respond[116]='1'; 00762 respond[117]='0'; 00763 respond[118]='0'; 00764 respond[119]=','; 00765 respond[120]='1'; 00766 respond[121]='.'; 00767 respond[122]='0'; 00768 respond[123]='0'; 00769 respond[124]='0'; 00770 respond[125]=' '; 00771 respond[126]=' '; 00772 respond[127]=' '; 00773 respond[128]=' '; 00774 respond[129]=' '; 00775 respond[130]=' '; 00776 respond[131]=' '; 00777 respond[132]=' '; 00778 respond[133]=' '; 00779 respond[134]=' '; 00780 respond[135]=' '; 00781 respond[136]=' '; 00782 respond[137]=' '; 00783 respond[138]=' '; 00784 respond[139]=' '; 00785 respond[140]=' '; 00786 respond[141]=' '; 00787 respond[142]=' '; 00788 respond[143]=' '; 00789 respond[144]=' '; 00790 respond[145]=' '; 00791 respond[146]=' '; 00792 respond[147]=' '; 00793 respond[148]=' '; 00794 respond[149]=' '; 00795 respond[150]=' '; 00796 respond[151]=' '; 00797 respond[152]=' '; 00798 respond[153]=ETX; 00799 respond[154]=CR; 00800 respond[155]=LF; 00801 respond[156]='\0'; 00802 00803 } else { 00804 respond[0]=STX; 00805 respond[1]='V'; 00806 respond[2]='N'; 00807 respond[3]=ETX; 00808 respond[4]=CR; 00809 respond[5]=LF; 00810 respond[6]='\0'; 00811 } 00812 printString(respond); 00813 00814 }//end values 00815 00816 00817 /** 00818 *Weight Units 00819 * 00820 *This command is used to set the weight units to either English 00821 *(pounds) or metric (kilograms) mode. 00822 * 00823 */ 00824 char weightUnits(char* command) 00825 { 00826 char respond[7]; 00827 char newUnits; 00828 if((command[3]== ETX)&&(command[4]== CR)&&(command[5]== LF)&&((command[2]=='M')||(command[2]=='E'))) { 00829 respond[0]=STX; 00830 respond[1]='#'; 00831 respond[2]='A'; 00832 respond[3]=ETX; 00833 respond[4]=CR; 00834 respond[5]=LF; 00835 respond[6]='\0'; 00836 newUnits = command[2]; 00837 }//end if 00838 else { 00839 respond[0]=STX; 00840 respond[1]='#'; 00841 respond[2]='N'; 00842 respond[3]=ETX; 00843 respond[4]=CR; 00844 respond[5]=LF; 00845 respond[6]='\0'; 00846 newUnits = wUnitsValue; 00847 }//end else 00848 printString(respond); 00849 return newUnits; 00850 }//end weightUnits 00851 00852 00853 /* 00854 *Zero 00855 * 00856 *This command should be issued periodically to force the CubiScan 00857 *to perform interal compensations to adjust to changes in temperature 00858 *and humidity. This command should onlu be issued when the measuring field is free of packages. 00859 *Never issue this command when a pacage is present in the measuring field. 00860 * 00861 */ 00862 00863 void zero(char* command) 00864 { 00865 char respond[7]; 00866 if((command[2]== ETX)&&(command[3]== CR)&&(command[4]== LF)) { 00867 respond[0]=STX; 00868 respond[1]='Z'; 00869 respond[2]='A'; 00870 respond[3]=ETX; 00871 respond[4]=CR; 00872 respond[5]=LF; 00873 respond[6]='\0'; 00874 }//end if 00875 else { 00876 respond[0]=STX; 00877 respond[1]='Z'; 00878 respond[2]='N'; 00879 respond[3]=ETX; 00880 respond[4]=CR; 00881 respond[5]=LF; 00882 respond[6]='\0'; 00883 }//end else 00884 printString(respond); 00885 }//end zero 00886 00887 void printString(char * str) 00888 { 00889 printf("%s",str ); 00890 }//end printString 00891 00892 00893 void measureCom() 00894 { 00895 char medidasCm[5][4]= {{'1','0','0','0'},{' ','9','8','2'}, 00896 {' ',' ','8','3'},{' ','3','4','8'}, 00897 {' ','7','6','4'} 00898 }; 00899 char medidasIn[5][4]= {{' ','3','9','3'},{' ','3','8','6'}, 00900 {' ',' ','3','3'},{' ','1','3','7'}, 00901 {' ','3','0','0'} 00902 }; 00903 char pesoLb[6][5]= {{'1','5','0','0','0'},{' ','7','9','1','5'}, 00904 {' ','6','3','2','5'} 00905 }; 00906 00907 char pesoKg[3][5]= {{' ','6','8','0','3'},{' ','3','5','9','0'}, 00908 {' ','2','8','6','8'} 00909 }; 00910 00911 char dimLbD[3][5]= {{' ','2','9','7','6'},{' ','1','0','4','0'},{' ',' ','8','0','9'}}; 00912 char dimLbI[3][5]= {{' ','3','6','3','7'},{' ','1','3','2','2'},{' ',' ','9','9','2'}}; 00913 00914 char dimKgD[3][5]= {{' ','1','3','5','0'},{' ',' ','4','7','2'},{' ',' ','3','6','7'}}; 00915 char dimKgI[3][5]= {{' ','1','6','5','0'},{' ',' ','6','0','0'},{' ',' ','4','5','0'}}; 00916 int token = rand()%2; 00917 char respond[63]= {' '}; 00918 respond[0]=STX; 00919 respond[1]='M'; 00920 respond[2]='A'; 00921 respond[3]='H'; 00922 respond[4]=id[0]; 00923 respond[5]=id[1]; 00924 respond[6]=id[2]; 00925 respond[7]=id[3]; 00926 respond[8]=id[4]; 00927 respond[9]=id[5]; 00928 respond[10]=','; 00929 if(dimUnitsValue=='E') { 00930 respond[11]='L'; 00931 respond[12]=medidasIn[token][0]; 00932 respond[13]=medidasIn[token][1]; 00933 respond[14]=medidasIn[token][2]; 00934 respond[15]='.'; 00935 respond[16]=medidasIn[token][3]; 00936 respond[17]=','; 00937 respond[18]='W'; 00938 respond[19]=medidasIn[token+1][0]; 00939 respond[20]=medidasIn[token+1][1]; 00940 respond[21]=medidasIn[token+1][2]; 00941 respond[22]='.'; 00942 respond[23]=medidasIn[token+1][3]; 00943 respond[24]=','; 00944 respond[25]='H'; 00945 respond[26]=medidasIn[token+2][0]; 00946 respond[27]=medidasIn[token+2][1]; 00947 respond[28]=medidasIn[token+2][2]; 00948 respond[29]='.'; 00949 respond[30]=medidasIn[token+2][3]; 00950 } else { 00951 respond[11]='L'; 00952 respond[12]=medidasCm[token][0]; 00953 respond[13]=medidasCm[token][1]; 00954 respond[14]=medidasCm[token][2]; 00955 respond[15]='.'; 00956 respond[16]=medidasCm[token][3]; 00957 respond[17]=','; 00958 respond[18]='W'; 00959 respond[19]=medidasCm[token+1][0]; 00960 respond[20]=medidasCm[token+1][1]; 00961 respond[21]=medidasCm[token+1][2]; 00962 respond[22]='.'; 00963 respond[23]=medidasCm[token+1][3]; 00964 respond[24]=','; 00965 respond[25]='H'; 00966 respond[26]=medidasCm[token+2][0]; 00967 respond[27]=medidasCm[token+2][1]; 00968 respond[28]=medidasCm[token+2][2]; 00969 respond[29]='.'; 00970 respond[30]=medidasCm[token+2][3]; 00971 } 00972 if(wUnitsValue=='E') { 00973 respond[31]=','; 00974 respond[32]=dimUnitsValue; 00975 respond[33]=','; 00976 respond[34]='K'; 00977 respond[35]=pesoLb[token][0]; 00978 respond[36]=pesoLb[token][1]; 00979 respond[37]=pesoLb[token][2]; 00980 respond[38]='.'; 00981 respond[39]=pesoLb[token][3]; 00982 respond[40]=pesoLb[token][4]; 00983 respond[41]=','; 00984 if(factor=='D') { 00985 respond[42]='D'; 00986 respond[43]=dimLbD[token][0]; 00987 respond[44]=dimLbD[token][1]; 00988 respond[45]=dimLbD[token][2]; 00989 respond[46]='.'; 00990 respond[47]=dimLbD[token][3]; 00991 respond[48]=dimLbD[token][4]; 00992 respond[49]=','; 00993 respond[50]=wUnitsValue; 00994 respond[51]=','; 00995 respond[52]='F'; 00996 respond[53]=' '; 00997 respond[54]='1'; 00998 respond[55]='6'; 00999 respond[56]='6'; 01000 respond[57]=','; 01001 } else { 01002 respond[42]='D'; 01003 respond[43]=dimLbI[token][0]; 01004 respond[44]=dimLbI[token][1]; 01005 respond[45]=dimLbI[token][2]; 01006 respond[46]='.'; 01007 respond[47]=dimLbI[token][3]; 01008 respond[48]=dimLbI[token][4]; 01009 respond[49]=','; 01010 respond[50]=wUnitsValue; 01011 respond[51]=','; 01012 respond[52]='F'; 01013 respond[53]=' '; 01014 respond[54]='1'; 01015 respond[55]='3'; 01016 respond[56]='9'; 01017 respond[57]=','; 01018 } 01019 } else { 01020 respond[31]=','; 01021 respond[32]=dimUnitsValue; 01022 respond[33]=','; 01023 respond[34]='K'; 01024 respond[35]=pesoKg[token][0]; 01025 respond[36]=pesoKg[token][1]; 01026 respond[37]=pesoKg[token][2]; 01027 respond[38]='.'; 01028 respond[39]=pesoKg[token][3]; 01029 respond[40]=pesoKg[token][4]; 01030 respond[41]=','; 01031 if(factor=='D') { 01032 respond[42]='D'; 01033 respond[43]=dimKgD[token][0]; 01034 respond[44]=dimKgD[token][1]; 01035 respond[45]=dimKgD[token][2]; 01036 respond[46]='.'; 01037 respond[47]=dimKgD[token][3]; 01038 respond[48]=dimKgD[token][4]; 01039 respond[49]=','; 01040 respond[50]=wUnitsValue; 01041 respond[51]=','; 01042 respond[52]='F'; 01043 respond[53]='6'; 01044 respond[54]='0'; 01045 respond[55]='0'; 01046 respond[56]='0'; 01047 respond[57]=','; 01048 } else { 01049 respond[42]='D'; 01050 respond[43]=dimKgI[token][0]; 01051 respond[44]=dimKgI[token][1]; 01052 respond[45]=dimKgI[token][2]; 01053 respond[46]='.'; 01054 respond[47]=dimKgI[token][3]; 01055 respond[48]=dimKgI[token][4]; 01056 respond[49]=','; 01057 respond[50]=wUnitsValue; 01058 respond[51]=','; 01059 respond[52]='F'; 01060 respond[53]='5'; 01061 respond[54]='0'; 01062 respond[55]='0'; 01063 respond[56]='0'; 01064 respond[57]=','; 01065 } 01066 } 01067 respond[58]=factor; 01068 respond[59]=ETX; 01069 respond[60]=CR; 01070 respond[61]=LF; 01071 respond[62]='\0'; 01072 01073 01074 printString(respond); 01075 }//end measureCom 01076 01077 void measureCom2() 01078 { 01079 // pc.printf("Entro"); 01080 Timer tim; 01081 char measureNum[5]= {' ',' ',' ',' '}; 01082 char measureNumGap[5]= {' ',' ',' ',' '}; 01083 char medidasCm[5][4]= {{'1','0','0','0'},{' ','9','8','2'}, 01084 {' ',' ','8','3'},{' ','3','4','8'}, 01085 {' ','7','6','4'} 01086 }; 01087 char medidasIn[5][4]= {{' ','3','9','3'},{' ','3','8','6'}, 01088 {' ',' ','3','3'},{' ','1','3','7'}, 01089 {' ','3','0','0'} 01090 }; 01091 char pesoLb[6][5]= {{'1','5','0','0','0'},{' ','7','9','1','5'}, 01092 {' ','6','3','2','5'} 01093 }; 01094 01095 char pesoKg[3][5]= {{' ','6','8','0','3'},{' ','3','5','9','0'}, 01096 {' ','2','8','6','8'} 01097 }; 01098 int token = rand()%2; 01099 int token2 = rand()%3; 01100 int token3 = rand()%2; 01101 01102 char respond[80]= {' '}; 01103 respond[0]=STX; 01104 respond[1]='B'; 01105 respond[2]='A'; 01106 itoa(MeasureNumber,measureNum); 01107 respond[3]=measureNum[3]; 01108 respond[4]=measureNum[2]; 01109 respond[5]=measureNum[1]; 01110 respond[6]=measureNum[0]; 01111 respond[7]=ETX; 01112 respond[8]=CR; 01113 respond[9]=LF; 01114 respond[10]='\0'; 01115 01116 printString(respond); 01117 01118 wait(2); 01119 01120 strcpy(respond,""); 01121 itoa(MeasureNumber+1,measureNumGap); 01122 respond[0]=STX; 01123 respond[1]='G'; 01124 respond[2]='A'; 01125 respond[3]=measureNumGap[3]; 01126 respond[4]=measureNumGap[2]; 01127 respond[5]=measureNumGap[1]; 01128 respond[6]=measureNumGap[0]; 01129 respond[7]=ETX; 01130 respond[8]=CR; 01131 respond[9]=LF; 01132 respond[10]='\0'; 01133 01134 printString(respond); 01135 strcpy(respond,""); 01136 01137 respond[0]=STX; 01138 respond[1]='M'; 01139 respond[2]='A'; 01140 respond[3]=measureNum[3]; 01141 respond[4]=measureNum[2]; 01142 respond[5]=measureNum[1]; 01143 respond[6]=measureNum[0]; 01144 respond[7]=','; 01145 respond[8]=id[0]; 01146 respond[9]=id[1]; 01147 respond[10]=id[2]; 01148 respond[11]=id[3]; 01149 respond[12]=id[4]; 01150 respond[13]=id[5]; 01151 respond[14]=','; 01152 if(dimUnitsValue=='E') { 01153 respond[15]='L'; 01154 respond[16]=medidasIn[token][0]; 01155 respond[17]=medidasIn[token][1]; 01156 respond[18]=medidasIn[token][2]; 01157 respond[19]='.'; 01158 respond[20]=medidasIn[token][3]; 01159 respond[21]=','; 01160 respond[22]='0'; 01161 respond[23]='0'; 01162 respond[24]=','; 01163 respond[25]='W'; 01164 respond[26]=medidasIn[token+1][0]; 01165 respond[27]=medidasIn[token+1][1]; 01166 respond[28]=medidasIn[token+1][2]; 01167 respond[29]='.'; 01168 respond[30]=medidasIn[token+1][3]; 01169 respond[31]=','; 01170 respond[32]='0'; 01171 respond[33]='0'; 01172 respond[34]=','; 01173 respond[35]='H'; 01174 respond[36]=medidasIn[token+2][0]; 01175 respond[37]=medidasIn[token+2][1]; 01176 respond[38]=medidasIn[token+2][2]; 01177 respond[39]='.'; 01178 respond[40]=medidasIn[token+2][3]; 01179 respond[41]=','; 01180 respond[42]='0'; 01181 respond[43]='0'; 01182 respond[44]=','; 01183 respond[45]='i'; 01184 respond[46]='n'; 01185 respond[47]=','; 01186 } else { 01187 respond[15]='L'; 01188 respond[16]=medidasCm[token][0]; 01189 respond[17]=medidasCm[token][1]; 01190 respond[18]=medidasCm[token][2]; 01191 respond[19]='.'; 01192 respond[20]=medidasCm[token][3]; 01193 respond[21]=','; 01194 respond[22]='0'; 01195 respond[23]='0'; 01196 respond[24]=','; 01197 respond[25]='W'; 01198 respond[26]=medidasCm[token+1][0]; 01199 respond[27]=medidasCm[token+1][1]; 01200 respond[28]=medidasCm[token+1][2]; 01201 respond[29]='.'; 01202 respond[30]=medidasCm[token+1][3]; 01203 respond[31]=','; 01204 respond[32]='0'; 01205 respond[33]='0'; 01206 respond[34]=','; 01207 respond[35]='H'; 01208 respond[36]=medidasCm[token+2][0]; 01209 respond[37]=medidasCm[token+2][1]; 01210 respond[38]=medidasCm[token+2][2]; 01211 respond[39]='.'; 01212 respond[40]=medidasCm[token+2][3]; 01213 respond[41]=','; 01214 respond[42]='0'; 01215 respond[43]='0'; 01216 respond[44]=','; 01217 respond[45]='c'; 01218 respond[46]='m'; 01219 respond[47]=','; 01220 } 01221 if(wUnitsValue=='E') { 01222 respond[48]='M'; 01223 respond[49]=pesoLb[token][0]; 01224 respond[50]=pesoLb[token][1]; 01225 respond[51]=pesoLb[token][2]; 01226 respond[52]='.'; 01227 respond[53]=pesoLb[token][3]; 01228 respond[54]=','; 01229 respond[55]='0'; 01230 respond[56]='0'; 01231 respond[57]=','; 01232 respond[58]='l'; 01233 respond[59]='b'; 01234 respond[60]=','; 01235 01236 } else { 01237 01238 respond[48]='M'; 01239 respond[49]=pesoKg[token][0]; 01240 respond[50]=pesoKg[token][1]; 01241 respond[51]=pesoKg[token][2]; 01242 respond[52]='.'; 01243 respond[53]=pesoKg[token][3]; 01244 respond[54]=','; 01245 respond[55]='0'; 01246 respond[56]='0'; 01247 respond[57]=','; 01248 respond[58]='k'; 01249 respond[59]='g'; 01250 respond[60]=','; 01251 } 01252 01253 respond[61]='1'; 01254 respond[62]='2'; 01255 respond[63]='/'; 01256 respond[64]='3'; 01257 respond[65]='1'; 01258 respond[66]='/'; 01259 respond[67]='1'; 01260 respond[68]='6'; 01261 respond[69]=','; 01262 respond[70]='1'; 01263 respond[71]='2'; 01264 respond[72]=':'; 01265 respond[73]='5'; 01266 respond[74]='9'; 01267 respond[75]='A'; 01268 respond[76]=ETX; 01269 respond[77]=CR; 01270 respond[78]=LF; 01271 respond[79]='\0'; 01272 wait_ms(120); 01273 if(ErrorNum==1) { 01274 if(token2==0) { 01275 respond[16]=' '; 01276 respond[17]=' '; 01277 respond[18]='0'; 01278 respond[19]='.'; 01279 respond[20]='0'; 01280 respond[21]=','; 01281 if(token3==0) { 01282 respond[22]='0'; 01283 respond[23]='1'; 01284 } else { 01285 respond[22]='1'; 01286 respond[23]='1'; 01287 } 01288 } else if(token2==1) { 01289 respond[26]=' '; 01290 respond[27]=' '; 01291 respond[28]='0'; 01292 respond[29]='.'; 01293 respond[30]='0'; 01294 respond[31]=','; 01295 if(token3==0) { 01296 respond[32]='0'; 01297 respond[33]='1'; 01298 } else { 01299 respond[32]='1'; 01300 respond[33]='1'; 01301 } 01302 } else { 01303 respond[36]=' '; 01304 respond[37]=' '; 01305 respond[38]='0'; 01306 respond[39]='.'; 01307 respond[40]='0'; 01308 respond[41]=','; 01309 if(token3==0) { 01310 respond[42]='0'; 01311 respond[43]='1'; 01312 } else { 01313 respond[42]='1'; 01314 respond[43]='1'; 01315 } 01316 } 01317 } else if(ErrorNum==2) { 01318 respond[49]=' '; 01319 respond[50]=' '; 01320 respond[51]='0'; 01321 respond[52]='.'; 01322 respond[53]='0'; 01323 respond[54]=','; 01324 if(token3==0) { 01325 01326 respond[55]='0'; 01327 respond[56]='1'; 01328 } else { 01329 respond[55]='1'; 01330 respond[56]='1'; 01331 } 01332 } 01333 printString(respond); 01334 MeasureNumber++; 01335 } 01336 /* itoa: convert n to characters in s */ 01337 void measureCom2TS(void) 01338 { 01339 01340 char measureNum[5]= {' ',' ',' ',' '}; 01341 01342 char medidasCm[5][4]= {{'1','0','0','0'},{' ','9','8','2'}, 01343 {' ',' ','8','3'},{' ','3','4','8'}, 01344 {' ','7','6','4'} 01345 }; 01346 char medidasIn[5][4]= {{' ','3','9','3'},{' ','3','8','6'}, 01347 {' ',' ','3','3'},{' ','1','3','7'}, 01348 {' ','3','0','0'} 01349 }; 01350 char pesoLb[6][5]= {{' ','1','5','0','0'},{' ',' ','7','9','5'}, 01351 {' ',' ','6','3','5'} 01352 }; 01353 01354 char pesoKg[3][5]= {{' ',' ','8','0','3'},{' ',' ','5','9','0'}, 01355 {' ',' ','8','6','8'} 01356 }; 01357 int token = rand()%2; 01358 int token2 = rand()%3; 01359 int token3 = rand()%2; 01360 01361 char respond[55]= {' '}; 01362 char respond1[7]= {' '}; 01363 respond1[0]=STX; 01364 respond1[1]='B'; 01365 respond1[2]='A'; 01366 respond1[3]='1'; 01367 respond1[4]='1'; 01368 respond1[5]=ETX; 01369 respond1[6]='\0'; 01370 01371 // printString(respond); 01372 // fputs(respond,stdout); 01373 strcpy(respond,""); 01374 itoa(MeasureNumber,measureNum); 01375 respond[0]=STX; 01376 respond[1]='A'; 01377 respond[2]=measureNum[3]; 01378 respond[3]=measureNum[2]; 01379 respond[4]=measureNum[1]; 01380 respond[5]=measureNum[0]; 01381 respond[6]='0'; 01382 respond[7]='0'; 01383 if(dimUnitsValue=='E') { 01384 respond[8]='L'; 01385 respond[9]=medidasIn[token][0]; 01386 respond[10]=medidasIn[token][1]; 01387 respond[11]=medidasIn[token][2]; 01388 respond[12]='.'; 01389 respond[13]=medidasIn[token][3]; 01390 respond[14]='i'; 01391 respond[15]='n'; 01392 respond[16]='0'; 01393 respond[17]='0'; 01394 respond[18]='W'; 01395 respond[19]=medidasIn[token+1][0]; 01396 respond[20]=medidasIn[token+1][1]; 01397 respond[21]=medidasIn[token+1][2]; 01398 respond[22]='.'; 01399 respond[23]=medidasIn[token+1][3]; 01400 respond[24]='i'; 01401 respond[25]='n'; 01402 respond[26]='0'; 01403 respond[27]='0'; 01404 respond[28]='H'; 01405 respond[29]=medidasIn[token+2][0]; 01406 respond[30]=medidasIn[token+2][1]; 01407 respond[31]=medidasIn[token+2][2]; 01408 respond[32]='.'; 01409 respond[33]=medidasIn[token+2][3]; 01410 respond[34]='i'; 01411 respond[35]='n'; 01412 respond[36]='0'; 01413 respond[37]='0'; 01414 } else { 01415 respond[8]='L'; 01416 respond[9]=medidasCm[token][0]; 01417 respond[10]=medidasCm[token][1]; 01418 respond[11]=medidasCm[token][2]; 01419 respond[12]='.'; 01420 respond[13]=medidasCm[token][3]; 01421 respond[14]='c'; 01422 respond[15]='m'; 01423 respond[16]='0'; 01424 respond[17]='0'; 01425 respond[18]='W'; 01426 respond[19]=medidasCm[token+1][0]; 01427 respond[20]=medidasCm[token+1][1]; 01428 respond[21]=medidasCm[token+1][2]; 01429 respond[22]='.'; 01430 respond[23]=medidasCm[token+1][3]; 01431 respond[24]='c'; 01432 respond[25]='m'; 01433 respond[26]='0'; 01434 respond[27]='0'; 01435 respond[28]='H'; 01436 respond[29]=medidasCm[token+2][0]; 01437 respond[30]=medidasCm[token+2][1]; 01438 respond[31]=medidasCm[token+2][2]; 01439 respond[32]='.'; 01440 respond[33]=medidasCm[token+2][3]; 01441 respond[34]='c'; 01442 respond[35]='m'; 01443 respond[36]='0'; 01444 respond[37]='0'; 01445 } 01446 if(wUnitsValue=='E') { 01447 respond[38]='M'; 01448 respond[39]=pesoLb[token][0]; 01449 respond[40]=pesoLb[token][1]; 01450 respond[41]=pesoLb[token][2]; 01451 respond[42]=pesoLb[token][3]; 01452 respond[43]='.'; 01453 respond[44]=pesoLb[token][4]; 01454 respond[45]='l'; 01455 respond[46]='b'; 01456 respond[47]='0'; 01457 respond[48]='0'; 01458 01459 01460 } else { 01461 respond[38]='M'; 01462 respond[39]=pesoKg[token][0]; 01463 respond[40]=pesoKg[token][1]; 01464 respond[41]=pesoKg[token][2]; 01465 respond[42]=pesoKg[token][3]; 01466 respond[43]='.'; 01467 respond[44]=pesoLb[token][4]; 01468 respond[45]='k'; 01469 respond[46]='g'; 01470 respond[47]='0'; 01471 respond[48]='0'; 01472 01473 } 01474 01475 respond[49]='0'; 01476 respond[50]='0'; 01477 respond[51]=ETX; 01478 //respond[52]=CR; 01479 //respond[53]=LF; 01480 respond[52]='\0'; 01481 01482 wait_ms(200); 01483 01484 if(ErrorNum==1) { 01485 if(token2==0) { 01486 respond[9]=' '; 01487 respond[10]=' '; 01488 respond[11]='0'; 01489 respond[12]='.'; 01490 respond[13]='0'; 01491 if(token3==0) { 01492 respond[16]='1'; 01493 respond[17]='3'; 01494 } else { 01495 respond[16]='1'; 01496 respond[17]='2'; 01497 } 01498 } else if(token2==1) { 01499 respond[19]=' '; 01500 respond[20]=' '; 01501 respond[21]='0'; 01502 respond[22]='.'; 01503 respond[23]='0'; 01504 if(token3==0) { 01505 respond[26]='1'; 01506 respond[27]='3'; 01507 } else { 01508 respond[26]='1'; 01509 respond[27]='2'; 01510 } 01511 } else { 01512 respond[29]=' '; 01513 respond[30]=' '; 01514 respond[31]='0'; 01515 respond[32]='.'; 01516 respond[33]='0'; 01517 if(token3==0) { 01518 respond[36]='1'; 01519 respond[37]='3'; 01520 } else { 01521 respond[36]='1'; 01522 respond[37]='2'; 01523 } 01524 } 01525 } else if(ErrorNum==2) { 01526 respond[39]=' '; 01527 respond[40]=' '; 01528 respond[41]=' '; 01529 respond[42]='0'; 01530 respond[43]='.'; 01531 respond[44]='0'; 01532 if(token3==0) { 01533 01534 respond[47]='1'; 01535 respond[48]='2'; 01536 } else { 01537 respond[47]='1'; 01538 respond[48]='3'; 01539 } 01540 } 01541 pc.printf("%s%s",respond1,respond); 01542 //printString(respond); 01543 MeasureNumber++; 01544 }//end measureCom2TS 01545 void itoa(int n, char s[]) 01546 { 01547 int i; 01548 i=n; 01549 s[0]=i%10+'0'; 01550 i-=i%10; 01551 01552 s[1]=(i%100)/10+'0'; 01553 i-=i%100; 01554 01555 s[2]=(i%1000)/100+'0'; 01556 i-=i%1000; 01557 01558 s[3]=(i%10000)/1000+'0'; 01559 01560 s[4]='\0'; 01561 01562 } 01563 01564 void changeWUnits(void) 01565 { 01566 01567 if(wUnitsValue=='E') { 01568 wUnitsValue='M'; 01569 // pc.printf("Weight units set to Metric.\n\r"); 01570 01571 } else { 01572 wUnitsValue='E'; 01573 //pc.printf("Weight units set to English.\n\r"); 01574 01575 } 01576 } 01577 01578 01579 void changeDUnits(void) 01580 { 01581 if(dimUnitsValue=='E') { 01582 dimUnitsValue='M'; 01583 //pc.printf("Dimension units set to Metric.\n\r"); 01584 01585 } else { 01586 dimUnitsValue='E'; 01587 //pc.printf("Dimension units set to English.\n\r"); 01588 01589 } 01590 } 01591 void ErrorGen(void) 01592 { 01593 if(ErrorNum<2) { 01594 ErrorNum++; 01595 } else { 01596 ErrorNum=0; 01597 } 01598 }
Generated on Wed Jul 13 2022 15:38:37 by 1.7.2