Das Deutsche Casio-Taschenrechner Forum wurde zum 31.12.2013 geschlossen und kann weiterhin als Nachschlagewerk verwendet werden.
Wer mehr erfahren möchte: Ein sehr guter Beitrag von Elias

Calc-to-Calc- gaming

Hilfe beim Programmieren mit dem fx-9860G SDK.

Calc-to-Calc- gaming

Beitragvon Paul94 » Sa 30. Jan 2010, 15:30

Hi!

Es soll mit Revolution-FX ja möglich sein Calc-to-Calc Spiele zu programmieren. Welche Ports muss ich dafür nutzen, wie bediene ich sie?

Paul
Paul94
 
Beiträge: 219
Registriert: Do 14. Mai 2009, 06:50
Taschenrechner: FX-9860G (OS 2.00.0200)
FX-CG 20

Re: Calc-to-Calc- gaming

Beitragvon SimonLothar » So 31. Jan 2010, 10:36

Man benutzt das Kabel mit den 2.5 mm Klinkensteckern.
Ich benutzt für die Ansteuerung die ensprechenden Syscalls.
Dokumentation:
http://casiokingdom.org/modules.php?nam ... pic&t=1133
SimonLothar
 
Beiträge: 228
Registriert: Mi 27. Mai 2009, 10:51
Taschenrechner: fx-9860G, fx-9860G slim, fx-9860G SD, fx-9860GII SD, fx-9750GII, fx-7400GII, fx-CG20, fx-9860GII-2 SD, fx-9750GII-2, fx-7400GII-2, fx-CP330+, fx-CP400

Re: Calc-to-Calc- gaming

Beitragvon Paul94 » So 31. Jan 2010, 19:52

Ich steig da leider nicht ganz durch...
Ist das so, dass ich da Daten hin schicken kann und auch welche empfangen (anfordern) kann?
Wäre nett, wenn du mir mal nen Beispiel geben könntest.

Paul
Paul94
 
Beiträge: 219
Registriert: Do 14. Mai 2009, 06:50
Taschenrechner: FX-9860G (OS 2.00.0200)
FX-CG 20

Re: Calc-to-Calc- gaming

Beitragvon SimonLothar » Mi 3. Feb 2010, 07:36

Ich kann Dir aber nur eine Variante mit Betriebssystemfunktionen (syscalls) anbieten. Soll ich Dir trotzdem ein Beispiel zusammenstellen? Wenn, ja, welche Datenmengen beabsichtigst Du zu transferieren. Einzelne Bytes oder größere Pakete?
SimonLothar
 
Beiträge: 228
Registriert: Mi 27. Mai 2009, 10:51
Taschenrechner: fx-9860G, fx-9860G slim, fx-9860G SD, fx-9860GII SD, fx-9750GII, fx-7400GII, fx-CG20, fx-9860GII-2 SD, fx-9750GII-2, fx-7400GII-2, fx-CP330+, fx-CP400

Re: Calc-to-Calc- gaming

Beitragvon Paul94 » Mi 3. Feb 2010, 07:47

Das wäre super, wenn ich mal ein Beispiel mit sScalls sehen könnte (vielleicht lernt man ja noch was). Es geht nur um ein paar Int-Werte (evtl. auch Array mit höchstens 20 Elementen), die in Echtzeit übertragen werden sollten, sodass sie dem anderen TR zur Verfügung stehen.

Paul
Paul94
 
Beiträge: 219
Registriert: Do 14. Mai 2009, 06:50
Taschenrechner: FX-9860G (OS 2.00.0200)
FX-CG 20

Re: Calc-to-Calc- gaming

Beitragvon SimonLothar » Mi 3. Feb 2010, 15:37

Ich habe mal was zusammengestellt. Habe ich eben zwischen slim und GII getestet.

Zunächst die Betriebssystemaufrufe:
SYSCALLS.SRC: (muss in die Liste der source files eingetragen werden)
Code: Alles auswählen
      .SECTION P,CODE,ALIGN=4
       .MACRO SYSCALL FUNO, SYSCALLNAME, TAIL=nop
       .export \SYSCALLNAME'
\SYSCALLNAME'
       mov.l #h'\FUNO, r0
       mov.l #H'80010070, r2
       jmp @r2
       \TAIL'
       .ENDM
       
   SYSCALL 040C,   _Serial_ReadOneByte
   SYSCALL 040E,   _Serial_BufferedTransmitOneByte
   SYSCALL 0418,   _Serial_Open
   SYSCALL 0419,   _Serial_Close
   
   .end

Dann das Hauptprogramm (die Schnittstellendefinitionen gehören natürlich normalerweise in eine Header-Datei):
Das meiste ist Verwaltungskram für Anzeige und Bremse. Das für die serielle Kommunikation wesentliche habe ich mit *** gekennzeichnet.
Code: Alles auswählen
#include "fxlib.h"
int Serial_BufferedTransmitOneByte( unsigned char ); // ***
int Serial_Open( void*sm ); // ***
int Serial_Close( int mode ); // ***
int Serial_ReadOneByte( unsigned char* ); // ***

//
int AddIn_main(int isAppli, unsigned short OptionNum)
{
   char open_mode[6];
   int xpos=1;
   int xpos2=1;
   unsigned char c, d;
   int i;
   
   open_mode[ 0 ] = 0; // always 0
   open_mode[ 1 ] = 9; // 0=300, 1=600, 2=1200, 3=2400, 4=4800, 5=9600, 6=19200, 7=38400, 8=57600, 9=115200 baud
   open_mode[ 2 ] = 2; // parity: 0=no; 1=odd; 2=even
   open_mode[ 3 ] = 0; // datalength: 0=8 bit; 1=7 bit
   open_mode[ 4 ] = 0; // stop bits: 0=one; 1=two
   open_mode[ 5 ] = 0; // always 0
   
   Serial_Open( &open_mode ); // ***
   c = 'A';
   while( IsKeyDown( KEY_CTRL_EXIT ) == 0 ){
      if ( c++ > 'Z' ) c = 'A';
      Serial_BufferedTransmitOneByte( c ); // ***
      locate( xpos++, 1 ); PrintC( &c ); PrintC( " " );
      if ( xpos > 20 ) xpos = 1;
      for ( i=0; i<1000000; i++ );  // ausbremsen, sonst kann man nichts mehr erkennen
      if ( Serial_ReadOneByte( &d ) == 0 ){ // ***
         locate( xpos2++, 4 ); PrintC( &d ); PrintC( " " );
         if ( xpos2 > 20 ) xpos2 = 1;
      }
      Bdisp_PutDisp_DD();
   }
   Serial_Close( 1 );
   return 1;
}
SimonLothar
 
Beiträge: 228
Registriert: Mi 27. Mai 2009, 10:51
Taschenrechner: fx-9860G, fx-9860G slim, fx-9860G SD, fx-9860GII SD, fx-9750GII, fx-7400GII, fx-CG20, fx-9860GII-2 SD, fx-9750GII-2, fx-7400GII-2, fx-CP330+, fx-CP400

Re: Calc-to-Calc- gaming

Beitragvon Paul94 » Mi 3. Feb 2010, 16:27

Vielen Dank!

Hab ich das jetzt richtig verstanden, dass ich mit Serial_BufferedTransmitOneByte() einen Byte schicke, den ich dann auf beiden Rechnern mit Serial_ReadOneByte() abrufen kann?

Und nochwas: Die Initialisierung des Arrays open_mode gibt mir noch Rätsel auf. Was kann ich da alles einstellen?

Paul
Paul94
 
Beiträge: 219
Registriert: Do 14. Mai 2009, 06:50
Taschenrechner: FX-9860G (OS 2.00.0200)
FX-CG 20

Re: Calc-to-Calc- gaming

Beitragvon SimonLothar » Mi 3. Feb 2010, 18:03

Paul94 hat geschrieben:...auf beiden Rechnern mit Serial_ReadOneByte() abrufen kann?Paul

Nein. Das Byte, das Rechner 1 sendet, kommt nur an Rechner 2 an und umgekehrt. Im Programm wird gleichzeitig von beiden Rechnern gesendet und vom jeweils anderen Rechner empfangen. In der oberen Zeile des Displays erscheinen die gesendeten Bytes. In der 4. Zeile erscheinen die vom jeweils anderen Rechner empfangenen Bytes.

Paul94 hat geschrieben:...Initialisierung des Arrays open_mode...Was kann ich da alles einstellen?
open_mode[0] und open_mode[5] haben immer den Wert 0. open_mode[1] kontrolliert die Baudrate, also die Geschwindigkeit mit der die Bits der einzelnen Bytes gesendet werden. Ich habe im Demo-Programm volle 115 kBaud eingestellt. Das sind etwa 10 kByte pro Sekunde. Mit dem kurzen Kabel geht das ohne Probleme. open_mode[2] kontrolliert das Paritätsbit. open_mode[2] kontrolliert das Stopbit. Du kannst die Einstellungen so lassen. Wenn Dich Details zum Paritäts- und Stopbit interessieren, schau mal in Wikipedia nach.
SimonLothar
 
Beiträge: 228
Registriert: Mi 27. Mai 2009, 10:51
Taschenrechner: fx-9860G, fx-9860G slim, fx-9860G SD, fx-9860GII SD, fx-9750GII, fx-7400GII, fx-CG20, fx-9860GII-2 SD, fx-9750GII-2, fx-7400GII-2, fx-CP330+, fx-CP400

Re: Calc-to-Calc- gaming

Beitragvon Py-Prog » Fr 29. Jul 2011, 18:20

Geht das auch mit CasioBasic ?
Benutzeravatar
Py-Prog
 
Beiträge: 28
Registriert: Do 10. Mär 2011, 19:55
Taschenrechner: Fx-CG20

Re: Calc-to-Calc- gaming

Beitragvon cfxm » So 31. Jul 2011, 14:22

Ohne zusätzliche Hardware: Nein.
cfxm
 
Beiträge: 739
Registriert: Mi 1. Apr 2009, 19:39

Nächste

Zurück zu fx-9860G SDK (Alle fx-9860G Modelle)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron