Hallo, Ich habe da eine Nette Frage.
Ich habe Windows 7 32bit.
Ich habe Visual Studio 2012.
Ich wollte mal nett Fragen wie die Variablen für das Ansteuern des
Serial Com Ports sind.
Bei Microsoft hier steht das der Command SerialPort() heisst.
https://msdn.microsoft.com/de-de/library/system.io.ports.serialport%28v=vs.110%29.aspx
Aber bei mir in Visual Studio wird der nicht erkannt.
Brauche ich da jezt ne bestimmte Einstellung oder eine Header datei?
Kann mir da jemand Helfen?
Vielen Dank.
Mit Freundlichen Grüßen.
Heinz schrieb:> Kann mir da jemand Helfen?
nein, weil du nicht mal schreibt welche Programmiersprache.
Und SerialPort ist kein Kommando oder Befehl sondern eine Klasse.
Hallo
bin jetzt bei der selben Aufgabenstellung. Muss mit VS2017 über RS232
mit einem MC kommunizieren. Bin aber gerade erstmal dabei eine
funktionierende Syntax für VS hinzubekommen.
Habe mir diese Beispiele von Peter II/ MSDN angeschaut, aber bei mir
kommen extrem viele Fehler-Meldungen.
Kann mir bitte jemand erklären wie ich mit den Referenzen umgehen muss?
Muss ich alle Codes der einzelnen Ref´s extra einfügen bzw einen
zusätzlichen Header einbauen?
Hoffe, dass ich nicht sagen muss, dass ein absoluter Newbe bin....
boar, mit so einer schnellen Antwort habe ich nicht gerechnet.. ;)
Großteils circa 50% der 62 Fehler, dass Typen(?) DCB HANDLE BOOL ,
ebenso Befehle wie GENERIC READ/ WRITE, OPEN EXISTING und auch Variablen
HCOM FSUCCESS nicht deklarierte Bezeichner sind.
Sonst noch, dass einige Bezeichner nciht gefunden wurden sind (circa
40%)
Sebastian M. schrieb:> Großteils circa 50% der 62 Fehler, dass Typen(?) DCB HANDLE BOOL ,> ebenso Befehle wie GENERIC READ/ WRITE, OPEN EXISTING und auch Variablen> HCOM FSUCCESS nicht deklarierte Bezeichner sind.
dann fehlt vermutlich einfach
Peter II schrieb:> dann fehlt vermutlich einfach>> #include <Windows.h>
nee, ist drinne
er hatte beim ersten compilieren auch gemeckert, dass ich #include
"stdafx.h" einfügen soll.
Nach dem einfügen und zweitem compilieren kamen die ganzen
Fehlermeldungen.
Auch eine Klammer zum Beenden der Main fehlte am Ende des
Original-Codes.
ok, erstmal gegoogled was CLI ist...
also der CODE ist aus dem Link weiter oben, den du damals mal gepostet
hast, herauskopiert. Da steht ja auch c++
ich habe hier einen kleinen Auszug:
void PrintCommState(DCB dcb)
{
// Print some of the DCB structure values
_tprintf(TEXT("\nBaudRate = %d, ByteSize = %d, Parity = %d, StopBits =
%d\n"),
dcb.BaudRate,
dcb.ByteSize,
dcb.Parity,
dcb.StopBits);
}
int _tmain(int argc, TCHAR *argv[])
{
DCB dcb;
HANDLE hCom;
BOOL fSuccess;
TCHAR *pcCommPort = TEXT("COM1"); // Most systems have a COM1 port
// Open a handle to the specified com port.
hCom = CreateFile(pcCommPort,
GENERIC_READ | GENERIC_WRITE,
0, // must be opened with exclusive-access
NULL, // default security attributes
OPEN_EXISTING, // must use OPEN_EXISTING
0, // not overlapped I/O
NULL); // hTemplate must be NULL for comm devices
if (hCom == INVALID_HANDLE_VALUE)
Fehlermeldungen sind dann ua:
"DCB": nichtdeklarierter Bezeichner
Syntaxfehler: Fehlendes ")" vor Bezeichner "dcb"
Syntaxfehler: Es fehlt ";" vor "{"
"{": Funktionsheader fehlt - Parameterliste im alten Stil?
Syntaxfehler: Fehlendes ";" vor Bezeichner "dcb"
aber du hattest ja auch mal was wegen der Referenzen noch gepostet. Hat
es damit was zu tun?
Peter II schrieb:> DCB ist in Winbase.h (include Windows.h) definiert.>> auch sehe ich dein include nicht. Wie soll man helfen, wenn du nicht den> complette code zeigst?
sorry, dachte nicht dass es wichtig ist, wenn der selbe code weiter oben
aus einem link nur herauskopiert ist
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include "stdafx.h"
void PrintCommState(DCB dcb)
{
// Print some of the DCB structure values
_tprintf(TEXT("\nBaudRate = %d, ByteSize = %d, Parity = %d, StopBits =
%d\n"),
dcb.BaudRate,
dcb.ByteSize,
dcb.Parity,
dcb.StopBits);
}
int _tmain(int argc, TCHAR *argv[])
{
DCB dcb;
HANDLE hCom;
BOOL fSuccess;
TCHAR *pcCommPort = TEXT("COM1"); // Most systems have a COM1 port
// Open a handle to the specified com port.
hCom = CreateFile(pcCommPort,
GENERIC_READ | GENERIC_WRITE,
0, // must be opened with exclusive-access
NULL, // default security attributes
OPEN_EXISTING, // must use OPEN_EXISTING
0, // not overlapped I/O
NULL); // hTemplate must be NULL for comm devices
if (hCom == INVALID_HANDLE_VALUE)
{
// Handle the error.
printf("CreateFile failed with error %d.\n", GetLastError());
return (1);
}
// Initialize the DCB structure.
SecureZeroMemory(&dcb, sizeof(DCB));
dcb.DCBlength = sizeof(DCB);
// Build on the current configuration by first retrieving all current
// settings.
fSuccess = GetCommState(hCom, &dcb);
if (!fSuccess)
{
// Handle the error.
printf("GetCommState failed with error %d.\n", GetLastError());
return (2);
}
PrintCommState(dcb); // Output to console
// Fill in some DCB values and set the com state:
// 57,600 bps, 8 data bits, no parity, and 1 stop bit.
dcb.BaudRate = CBR_57600; // baud rate
dcb.ByteSize = 8; // data size, xmit and rcv
dcb.Parity = NOPARITY; // parity bit
dcb.StopBits = ONESTOPBIT; // stop bit
fSuccess = SetCommState(hCom, &dcb);
if (!fSuccess)
{
// Handle the error.
printf("SetCommState failed with error %d.\n", GetLastError());
return (3);
}
// Get the comm config again.
fSuccess = GetCommState(hCom, &dcb);
if (!fSuccess)
{
// Handle the error.
printf("GetCommState failed with error %d.\n", GetLastError());
return (2);
}
PrintCommState(dcb); // Output to console
_tprintf(TEXT("Serial port %s successfully reconfigured.\n"),
pcCommPort);
return (0);
}
Sebastian M. schrieb:> sorry, dachte nicht dass es wichtig ist, wenn der selbe code weiter oben> aus einem link nur herauskopiert ist
geht bei mir Problemlos.
VS2013 -> neues Projekt -> Konsolenanwendung -> leeres Projekt -> neue
Datei main.cpp -> code einfügen -> zeile stdafx löschen
1>------ Neues Erstellen gestartet: Projekt: ConsoleApplication1,
Konfiguration: Debug Win32 ------
1> main.cpp
1> ConsoleApplication1.vcxproj ->
C:\Develop\x5\ConsoleApplication1\Debug\ConsoleApplication1.exe
========== Alles neu erstellen: 1 erfolgreich, 0 fehlerhaft, 0
übersprungen ==========
?!? hat das was mit VS2017 zu tun? bin halt auf arbeit und kann mir mal
nicht so schnell ein altes VS installieren
aber geatn wie du schriebst: Fehler
Fehler C1010 Unerwartetes Dateiende während der Suche nach dem
vorkompilierten Header. Haben Sie möglicherweise vergessen, im Quellcode
"#include "stdafx.h"" einzufügen?
ich krieg ne macke....
ich glaub ich lass es und versuche es mit einem anderen Beispiel-Code
mich daran langsam aufzubauen
ok, jetzt scheint es zu laufen...
kannst du kurz erklären was das bedeuten soll mit dem "abschalten" der
vorkompilierten header?
und es kommt immer kurz die konsole auf
versuche diese halt über eine scanf-funk bzw while-schleife aufrecht
zuerhalten, aber sie beendet sich trotzdem immer. Hat das was mit der
Fehlermeldung zu tun? oder hast du eine bessere Idee, dass die Konsole
offen bleibt?
vielen dank für die mühen
Sebastian M. schrieb:> kannst du kurz erklären was das bedeuten soll mit dem "abschalten" der> vorkompilierten header?
ich habe mich bis jetzt noch nicht wirklich mit den "vorkompilierten
Header" beschäftig. Es soll die Kompilierzeiten verringern, aber meine
Projekte sind so klein das das egal ist. Bis jetzt empfand ich sie nur
als störend weil es nur Probleme damit gab. (zumindest bei mir).
> oder hast du eine bessere Idee, dass die Konsole offen bleibt?
einfach eine Breakpoint setzen