#include #include int convBase(char *result,unsigned long v, long base) { char digits[] = "0123456789ABCDEF"; int i=0; if((base < 2) || (base > 16)) { strcpy(result, "Error: base out of range."); } else { do { result[i++]=digits[v % base]; v /= base; } while(v); } result[i++]='\0'; return i; } void getLineUpData(int r[8],char* s){ int i=0; char cPrev='1'; for (i=0; i < strlen(s);i++){ if(cPrev !=s[i]){ if(cPrev=='0'){ r[i]= 191; } else{ r[i]= 218; } } else{ if(s[i]=='0' && cPrev=='0'){ r[i]=196; } if(s[i]=='1' && cPrev=='1'){ r[i]=32; } } cPrev=s[i]; } } void getLineDownData(int r[],char* s){ int i=0; char cPrev='1'; for (i=0; i < strlen(s);i++){ if(cPrev !=s[i]){ if(cPrev=='0'){ r[i]= 192; } else{ r[i]= 217; } } else{ if(s[i]=='0' && cPrev=='0'){ r[i]=32; } if(s[i]=='1' && cPrev=='1'){ r[i]=196; } } cPrev=s[i]; } } void testLibro(){ printf("Schema simbolico Rs232 9600,n,8,1 per 'A':\n"); printf("%c%c%c%c%c%c%c%c%c%c\n",191, 218,191,218,196,196,196,196,191, 218); printf("%c%c%c%c%c%c%c%c%c%c\n",192, 217,192,217, 32, 32, 32, 32,192, 217); } int main(){ int U[8]={0}; int D[8]={0}; char c; char sData[9]={0},sDataRaw[9]={0}; int i; //testLibro(); //return 0; while(scanf("%c",&c)>0){ fflush(stdin); if (!(c>=0 && c <256)){ printf("Not in ASCII Table!\n"); continue; } convBase(sDataRaw,(int)c,2); sprintf(sData,"%08s", sDataRaw); printf(" %s (%d,0x%x)\n",sData,c,c); printf("%c",191); getLineUpData(U,sData); for(i=0;i<8;i++) printf("%c",U[i]); printf("%c",218); printf("\n"); printf("%c",192); getLineDownData(D,sData); for(i=0;i<8;i++) printf("%c",D[i]); printf("%c",217); printf("\n\n"); } return 0; }