Advertisement
Guest User

louisdu26

a guest
May 18th, 2015
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.00 KB | None | 0 0
  1. extern "C" {
  2. #define __KEYBIOS_H__
  3. #include "fxlib.h"
  4. }
  5. #include <iostream>
  6. #include "screen.hpp"
  7. #include "compatibilityscripts.cpp"
  8. #include "syscall.h"
  9. #include "string.h"
  10.  
  11. #define keypressed(code,min,maj,nbr) \
  12.     if(KeyDown(code)){ \
  13.     (writemode==0)?sendbyte=(min):((writemode==1)?sendbyte=(maj):sendbyte=(nbr)); \
  14.     Serial_WriteByte(sendbyte); \
  15.     if(showSended)screen.write(sendbyte); \
  16.     while(KeyDown(code) && !repetition){Sleep(1);}}
  17.  
  18.    
  19.     int main()
  20.     {
  21.         //defaults settings
  22.             bool hex = false;
  23.             bool repetition = false;
  24.             bool showSended = true;
  25.             unsigned char writemode = 0;//0:min , 1:maj, 2:nombres
  26.         //init
  27.             unsigned char readbyte = 0;
  28.             unsigned char sendbyte = 0;
  29.         //start and prepare screen
  30.             Screen screen;
  31.             screen.setString("  The Official ACHAT",0);
  32.             screen.setString("        By AC & Pilou",1);
  33.             screen.setString("Et Planete-casio",2);
  34.             screen.setString("F1: min, MAJ, Nb",3);
  35.             screen.setString("F2: Mode hexa/ascii",4);
  36.             screen.setString("F3: clear",5);
  37.             screen.setString("F4: Key Repeat",6);
  38.             screen.setString("F5: Montrer txt Env",7);
  39.             screen.setString("F6: Quitter",8);
  40.             screen.setActualLine(9);
  41.             screen.rewritescreen();
  42.         //open com port    
  43.             unsigned char conf[]={0,5,0,0,0,0};
  44.             Serial_Open(conf);
  45.         //Keys
  46.             while(1)
  47.             {
  48.                 //F1:Send in Min, Maj, Nbr
  49.                 if(KeyDown(KEY_CTRL_F1)){
  50.                     writemode = (writemode+1)%3;
  51.                     switch(writemode)
  52.                     {
  53.                         case 0 : screen.writeLine("Envoi Minuscule"); break;
  54.                         case 1 : screen.writeLine("Envoi Majuscule"); break;
  55.                         case 2 : screen.writeLine("Envoi Nombre"); break;
  56.                     }
  57.                     while(KeyDown(KEY_CTRL_F1)){Sleep(1);}}
  58.                 //F2:Receive in hex or not
  59.                 if(KeyDown(KEY_CTRL_F2)){
  60.                     hex=!hex;
  61.                     if(hex)screen.writeLine("Mode Hexa");
  62.                     else screen.writeLine("Mode ASCII");
  63.                     while(KeyDown(KEY_CTRL_F2)){Sleep(1);}}
  64.                 //F3:Clear screen
  65.                 if(KeyDown(KEY_CTRL_F3)){
  66.                     screen.clear();
  67.                     while(KeyDown(KEY_CTRL_F3)){Sleep(1);}}
  68.                 //F4:authorize or not key repetition
  69.                 if(KeyDown(KEY_CTRL_F4)){
  70.                     repetition=!repetition;
  71.                     if(repetition)screen.writeLine("KKey Repeat ON");
  72.                     else screen.writeLine("Key Repeat OFF");
  73.                     while(KeyDown(KEY_CTRL_F4)){Sleep(1);}}
  74.                 //F5:Show sended chars
  75.                 if(KeyDown(KEY_CTRL_F5)){
  76.                     showSended=!showSended;
  77.                     if(showSended)screen.writeLine("Montre le texte");
  78.                     else screen.writeLine("Cache le Texte");
  79.                     while(KeyDown(KEY_CTRL_F5)){Sleep(1);}}
  80.                 //F6:Quit
  81.                 if(KeyDown(KEY_CTRL_F6)){
  82.                     break;
  83.                     while(KeyDown(KEY_CTRL_F6)){Sleep(1);}}
  84.                 //MENU:Quit
  85.                 if(KeyDown(KEY_CTRL_MENU)){
  86.                     break;
  87.                     while(KeyDown(KEY_CTRL_MENU)){Sleep(1);}}
  88.                 //EXE:NewLine
  89.                     keypressed(KEY_CTRL_EXE,0xA,0xA,0xA);
  90.                 //Letters
  91.                     keypressed(KEY_CHAR_0,'z','Z','0');
  92.                     keypressed(KEY_CHAR_1,'u','U','1');
  93.                     keypressed(KEY_CHAR_2,'v','V','2');
  94.                     keypressed(KEY_CHAR_3,'w','W','3');
  95.                     keypressed(KEY_CHAR_4,'p','P','4');
  96.                     keypressed(KEY_CHAR_5,'q','Q','5');
  97.                     keypressed(KEY_CHAR_6,'r','R','6');
  98.                     keypressed(KEY_CHAR_7,'m','M','7');
  99.                     keypressed(KEY_CHAR_8,'n','N','8');
  100.                     keypressed(KEY_CHAR_9,'o','O','9');
  101.                     keypressed(KEY_CTRL_XTT,'a','A','A');
  102.                     keypressed(KEY_CHAR_LOG,'b','B','B');
  103.                     keypressed(KEY_CHAR_LN,'c','C','C');
  104.                     keypressed(KEY_CHAR_SIN,'d','D','D');
  105.                     keypressed(KEY_CHAR_COS,'e','E','E');
  106.                     keypressed(KEY_CHAR_TAN,'f','F','F');
  107.                     keypressed(KEY_CHAR_FRAC,'g','G','G');
  108.                     keypressed(KEY_CTRL_FD,'h','H','H');
  109.                     keypressed(KEY_CHAR_LPAR,'i','I','I');
  110.                     keypressed(KEY_CHAR_RPAR,'j','J','J');
  111.                     keypressed(KEY_CHAR_COMMA,'k','K','K');
  112.                     keypressed(KEY_CHAR_STORE,'l','L','L');
  113.                     keypressed(KEY_CHAR_DP,' ',' ',',');
  114.                     keypressed(KEY_CHAR_PLUS,'x','X','+');
  115.                     keypressed(KEY_CHAR_MINUS,'y','y','-');
  116.                     keypressed(KEY_CHAR_MULT,'s','S','*');
  117.                     keypressed(KEY_CHAR_DIV, 't', 'T', '/');
  118.                     keypressed(KEY_CHAR_EXP, '!' 0xA, '!' 0xA, 'e');
  119.                     keypressed(KEY_CHAR_SQUARE, 0xA'debut:', 0xA'debut:', 0xA'debut:');
  120.                     keypressed(KEY_CHAR_POW, 0xA'Fin.', 0xA'Fin.', 0xA'Fin.');
  121.  
  122.  
  123.                 //Read serial
  124.                 if(Serial_ReadByte(&readbyte)==0)
  125.                 {
  126.                     if(!hex)
  127.                     {
  128.                         screen.write(readbyte);
  129.                     }
  130.                     else
  131.                     {
  132.                         //hex (string) conversion
  133.                             screen.write(' ');//delete this if you don't want space between hex bytes
  134.                         //First 4 bits
  135.                         if((readbyte>>4) <10)
  136.                             screen.write((readbyte>>4)+48);
  137.                         else
  138.                             screen.write((readbyte>>4)+87);
  139.                         //Last 4 bits
  140.                         if((readbyte&15) <10)
  141.                             screen.write((readbyte&15)+48);
  142.                         else
  143.                             screen.write((readbyte&15)+87);
  144.                     }
  145.                 }
  146.                
  147.             }
  148.             Serial_Close(1);
  149.     }
  150.  
  151. extern "C"
  152. {
  153.     int AddIn_main(int isAppli, unsigned short OptionNum)
  154.     {
  155.         return main();
  156.     }
  157.  
  158.     #pragma section _BR_Size
  159.     unsigned long BR_Size;
  160.     #pragma section
  161.     #pragma section _TOP
  162.     int InitializeSystem(int isAppli, unsigned short OptionNum){
  163.         return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
  164.     }
  165.     #pragma section
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement