Cubiscan Emulator

Dependencies:   PinDetect TimeZone mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }