RS232 : Unterschiede in Win Versionen?

CamCapture

Grünschnabel
Hi at all

Mir stellt sich folgendes Problem:
Habe beim Kollegen ein kleines c (ja is glaub c) Programm erstellt,
das mir Daten, die von der Seriellen Schnittstelle aso RS232, COM1
38400Baud kommen in eine .PGM-Datei schreibt.
Wie gesagt ich hab das aus Mangel an Software beim Kollegen gemacht
(Ich arbeite eher mit Controllern was, mMn eine andere Welt ist) und zwar mit
ähm... Borland C++ glaube ich.
Beim Kollegen arbeitete das Programm einwandfrei wie ich die .exe jedoch
bei mir Ausführe behaupted er ihm fehle ein DLL. Na, denk ich mir kannste haben
lade sie mir runter und... nix Passiert.

"nix" stimmt eigentlich nicht d.h. : das Konsolen Fenster öffnet sich,
dann die Startanfrage und an dem Punkt an dem es auf Daten vom
Controller wartet hängt er (while(Com. Inport != 1)).
Ich möchte nicht ausschliesen, dass es an meinem Code liegt.
Vlt. hat es was mit der Parität zu tun aber eigentlich....na ja.

Könnte das an meiner Win-Version liegen oder (ich habs hier ma gelesen) liegts am
Boorland?
 
Zuletzt bearbeitet:
Quellcode jaja... ich hab keine Ahnung von dem Win-gedöns...
Code:
#include  "serial.h"       //NICHT MEINE : siehe unten
#include  <stdio.h>
#include  <conio.h>
#include  <fstream>

unsigned int i;
unsigned int ii;
unsigned int l;

unsigned char data;
unsigned int PICTURE[80][200];

unsigned int pixel;
unsigned int zeile;

using namespace std;



void main (void)
{
 printf ("Start?");

 getchar();

 RS232 Com("COM1");              // indiziere Com 1

 while ((Com. Inport() & 0x01) != 1);
 printf ("Cam Detected\n");

 Com. Outport(128);

 while ((Com. Inport() & 0x02) != 2);
 printf ("Load Datas...\n\n");

        fstream datei;
        datei.open("c:dat.pgm", ios::out);

        datei << "#converted with PICTURE CAPTURE(c) by D.Fritschi" <<endl;
        datei << " " <<endl;
        datei << "P2" <<endl;
        datei << "80 200" <<endl;
        datei << "255" <<endl;
        datei << "  " <<endl;

        while (1)
        {


                 if (i == 79) {
                                i = 0;
                                ii = ii++;
                                datei << " " <<endl;
                             }

                while ((Com. Inport() & 0x01) != 1);

                PICTURE[i][ii] = Com. Inport();
                datei << PICTURE[i][ii] <<ends;
                i=i++;


                clrscr();
                printf ("Captured : %i \% \n" , ii/2);

                if (ii == 200){ datei << " " <<endl;
                                datei << "#PICTURE Captured" <<endl;
                                break;
                             }

        }



        printf ("\n");
        printf ("finished");

        pixel =Com. Inport();



        datei << "# finished converting to .PGM"  <<endl;

        datei.close();
        Com. Outport(0);
}
 
Das ist die Header Serial.h

//---------------------------------------------------------------------------
// Datei : RS232.H
// Datum : 15.10.99/Sce
// Funktion : fuer Konsole-Modus
// Wichtig : windows.h einbinden fuer API-Aufrufe
//---------------------------------------------------------------------------
// Aenderungen
// 16.10.99 - Konstruktor um Baudrate erweitert
// Default-Wert COM = 0; Baudrate = 38400
// 17.10.99 - Konstruktor: neu "COM1" statt 0 usw uebergeben
//---------------------------------------------------------------------------

#ifndef serialH
#define serialH
#define Byte unsigned char
#include <condefs.h>
#include <windows.h>
#include <time.h>

void delay(long int ms); //Aufloesung 10ms
void Delay(long int ms); //mit Zaehler fuer 1ms-Aufloesung
int Hex_Dez (char*);
char* Dez_Hex (int);
char Taste(int &scan);

class RS232 {
DCB dcb; //Daten
int CommPort;
int Baudrate;
HANDLE hPort;

public:
RS232 (char *sPort="COM1", int Baudr=38400);
~RS232 (); //Destruktor

private:
BOOL CommExists (); //Methoden
void InitPort();
HANDLE OpenPort();
void Fehlermeldung (char*);

public:
Byte Inport();
void Outport(Byte);
};

#endif
 
Für den dens interessiert : so send ich die Daten vom Controller aus...
Controller : ADuC832

Code:
T3CON =  0x83;
T3FD  =  0x2D;

//SC0N = 01000000
SCON =64;	


	  
for (i=0;i<16010;i++)
{
	SBUF =RAM_DATA[i];
	TB8 = 0;  //SINNLOS (glaube ich)
	
	while (TI );
	TI = 0;
}
 

Neue Beiträge

Zurück