Ergebnis 1 bis 18 von 18
  1. Hallo,

    meine Frage ist, wie schreibe ich ein Programm mit .Net für die Kommunikation über die serielle Schnittstelle auf dem PDA?
    Hat jemand Erfahrung damit oder gibt es vielleicht irgendwo eins zum runterladen? Das Problem ist nämlich, das in .Net kein Steuerelement dafür existiert! Wäre für Hilfe sehr dankbar!!!

    Vielen Dank im Vorraus

    Smilie
    0
     

  2. nun, sie dir mal die http://MSDN knowledgebasehttp://msdn...leembedded.asp an, da findest du bestimmt was. Ich kenne mich nicht mit .NET aus, sorry.
    0
     

  3. Hallo

    Hier etwas Code, um Serialports zu verwenden.

    Dieser Code liest vom Serialport (GPS) und ist Bestandteil eines Projektes von mir.

    Code:
    using System;
    using System.Drawing;
    using System.Collections;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    using System.Text;
    using System.Threading;
    
    namespace interware.io.Serial
    {
    	/// <summary>
    	/// Summary description for Receiver.
    	/// </summary>
    	/// 
    
    
    	public delegate void NMEADataReceivedHandler&#40;string NMEAData&#41;;
    
    	public class Receiver &#58; System.ComponentModel.Component
    	&#123;
    		private string m_ComPort;
    		private int    m_Baudrate;
    
    		private int		handleSerialPort	= -1;
    		private bool	bCycle				= false;
    
    		private static Receiver m_MySelf;
    		private System.Threading.Thread m_Worker;
    
    		public event NMEADataReceivedHandler NMEADataReceived;
    
    		public Receiver&#40;string comport, int baudrate&#41;
    		&#123;
    			/// <summary>
    			/// Required for Windows.Forms Class Composition Designer support
    			/// </summary>
    			InitializeComponent&#40;&#41;;
    
    			//
    			// TODO&#58; Add any constructor code after InitializeComponent call
    			//
    
    			m_ComPort = comport;
    
    			m_Baudrate = baudrate;
    
    		&#125;
    
    
    		# region Structures and Classes
    		//&#91;StructLayout&#40;LayoutKind.Sequential, Pack=1&#41;&#93; // for desktop uncomment this line
    		public class OVERLAPPED
    		&#123;
    			public int Internal;
    			public int InternalHigh;
    			public int Offset;
    			public int OffsetHigh;
    			public int hEvent;
    		&#125;
    
    		//&#91;StructLayout&#40;LayoutKind.Sequential, Pack=1&#41;&#93;
    		public struct DCB
    		&#123;
    			public int DCBlength;                     
    			public int BaudRate;
    			public int fBinary;     ///* Binary Mode &#40;skip EOF check&#41;    
    			public int fParity;     // Enable parity checking          
    			public int fOutxCtsFlow; // CTS handshaking on output       
    			public int fOutxDsrFlow; // DSR handshaking on output       
    			public int fDtrControl;  // DTR Flow control                
    			public int fDsrSensitivity; // DSR Sensitivity              
    			public int fTXContinueOnXoff; //Continue TX when Xoff sent 
    			public int fOutX;        //Enable output X-ON/X-OFF        
    			public int fInX;         //Enable input X-ON/X-OFF         
    			public int fErrorChar;   //Enable Err Replacement          
    			public int fNull;        //Enable Null stripping           
    			public int fRtsControl;   //Rts Flow control                
    			public int fAbortOnError;  //Abort all reads and writes on Error 
    			public int fDummy;      //Reserved                        
    			public Int16 wReserved;        //Not currently used              
    			public Int16 XonLim;           //Transmit X-ON threshold         
    			public Int16 XoffLim;          //Transmit X-OFF threshold        
    			public byte ByteSize;         //Number of bits/byte, 4-8        
    			public byte Parity;           //0-4=None,Odd,Even,Mark,Space    
    			public byte StopBits;         //0,1,2 = 1, 1.5, 2               
    			public char XonChar;          //Tx and Rx X-ON character        
    			public char XoffChar;         //Tx and Rx X-OFF character       
    			public char ErrorChar;        //Error replacement char          
    			public char EofChar;          //End of Input character          
    			public char EvtChar;          //Received Event character        
    			public Int16 wReserved1;       //Fill for now. 
    
    		&#125; // end DCB Struct
    
    		#endregion
    
    		#region DllImports
    		&#91;DllImport&#40;"coredll.dll"&#41;&#93; 
    		private static extern int SetCommState&#40;int hCommDev, ref DCB lpDCB&#41;;
    
    		&#91;DllImport&#40;"coredll.dll"&#41;&#93; 
    		private static extern int GetCommState&#40;int hCommDev, ref DCB lpDCB&#41; ;
    
    		&#91;DllImport&#40;"coredll.dll"&#41;&#93; 
    		static extern int ReadFile&#40;int hFile, Byte&#91;&#93; Buffer, int nNumberOfBytesToRead, ref int lpNumberOfBytesRead, ref OVERLAPPED lpOverlapped &#41; ;
    
    		&#91;DllImport&#40;"coredll.dll"&#41;&#93; 
    		static extern int CreateFile&#40;string lpFileName, int dwDesiredAccess, int dwShareMode, int lpSecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, int hTemplateFile&#41; ;
    
    		&#91;DllImport&#40;"coredll.dll"&#41;&#93; 
    		static extern int CloseHandle&#40;int hObject&#41; ;
    		#endregion
    
    
    
    		public static void CreateReceiver&#40;string comport, int baudrate&#41;
    		&#123;
    			m_MySelf = new Receiver&#40;comport, baudrate&#41;;
    		&#125;
    
    		public static Receiver Current
    		&#123;
    			get
    			&#123;
    				return m_MySelf;
    			&#125;
    		&#125;
    
    
    		public bool StartReceiving&#40;&#41;
    		&#123;
    			// Let's try to close the Port if we have a handle
    			CloseComm&#40;ref handleSerialPort&#41;;
    			
    			handleSerialPort = CreateFile&#40;m_ComPort, unchecked&#40;&#40;int&#41;0x80000000&#41; | 0x40000000, 0, 0, 3, 0, 0&#41;;
    //			if &#40;handleSerialPort < 1&#41;
    //			&#123;
    ////				label1.Text = "Error&#58; Unable to open port&#58; " + port + " " + Convert.ToString&#40;handleSerialPort&#41;;
    //				return false;
    //			&#125;
    			if &#40;handleSerialPort != -1&#41;
    			&#123;
    
    				DCB dcb = new DCB&#40;&#41;;
    
    				// Not needed for NETCF
    				//dcb.DCBlength = Marshal.SizeOf&#40;dcb&#41;;
    
    				// Get existing Comm State
    				GetCommState &#40;handleSerialPort, ref dcb&#41;; // Get the default port setting information.
    
    
    				// Change the DCB structure settings.
    				dcb.BaudRate = m_Baudrate; // Set to Baud rate defined in textbox
    				dcb.fBinary = 1;              // Binary mode; no EOF check 
    				dcb.fParity = 1;              // Enable parity checking 
    				dcb.fOutxCtsFlow = 0;         // No CTS output flow control 
    				dcb.fOutxDsrFlow = 0;         // No DSR output flow control 
    				dcb.fDtrControl = 1;          // DTR_CONTROL_ENABLE = 1 // DTR flow control type 
    				dcb.fDsrSensitivity = 0;      // DSR sensitivity 
    				dcb.fTXContinueOnXoff = 1;    // XOFF continues Tx 
    				dcb.fOutX = 0;                // No XON/XOFF out flow control 
    				dcb.fInX = 0;                 // No XON/XOFF in flow control 
    				dcb.fErrorChar = 0;           // Disable error replacement 
    				dcb.fNull = 0;                // Disable null stripping 
    				dcb.fRtsControl = 1;		  // RTS_CONTROL_ENABLE = 1 // RTS flow control 
    				dcb.fAbortOnError = 0;        // Do not abort reads/writes on error
    				dcb.ByteSize = 8;             // Number of bits/byte, 4-8 
    				dcb.Parity = 0;               // 0-4=no,odd,even,mark,space 
    				dcb.StopBits = 0;             // 0,1,2 = 1, 1.5, 2 
    
    				// Attempt to set new Comm state
    				int result = SetCommState&#40;handleSerialPort, ref dcb&#41;;
    
    				if &#40;result != 0&#41;
    				&#123;
    					//dwError = GetLastError&#40;&#41;; // Could not configure the serial port.
    					//label1.Text = "Error Setting State. Result&#58; " + result.ToString&#40;&#41;;
    					return false;
    				&#125;
    				else
    				&#123;
    					//label1.Text = "was&#58; " + oldbaud + " baud, setting to&#58; " + newbaud.ToString&#40;&#41; + " baud.";
    					m_Worker = new Thread&#40;new ThreadStart&#40;this.Receive&#41;&#41;;
    					m_Worker.Start&#40;&#41;;
    					return true;
    				&#125;
    			&#125;
    			else
    				//label1.Text = "Error&#58; Comm Port not open";
    				return false;
    
    //			label1.Text = "opened " + port + Convert.ToString&#40;handleSerialPort&#41;;
    //			return true;
    
    		&#125;
    
    		public void EndReceiving&#40;&#41;
    		&#123;
    			CloseComm&#40;ref handleSerialPort&#41;;
    		&#125;
    
    		private void CloseComm&#40;ref int hComm&#41;
    		&#123;
    			// stop reading loop
    			bCycle = false;
    
    			if &#40;hComm != -1 &#41;
    			&#123;
    				int result = CloseHandle&#40;hComm&#41;;
    				if &#40;result < 1&#41;
    				&#123;
    					//label1.Text = "Error&#58; Failed to close " + strPort;
    				&#125;
    				else
    				&#123;
    					//label1.Text = "Closed " + strPort + " Successfully";
    					hComm = -1;
    				&#125;
    			&#125;
    		&#125; // end CloseComm
    
    
    		private void Receive&#40;&#41;
    		&#123;
    			int	iRc	= -1;
    			bCycle = true;
    			int		BytesToRead			= 40;
    			int		BytesActuallyRead	= 0;
    			byte&#91;&#93;	Buffer;
    
    			if &#40;handleSerialPort != -1&#41;
    
    			&#123;
    
    				// Loop and grab data from COM buffer and display in Label control
    				while &#40;bCycle&#41;
    				&#123;
    					Buffer = new Byte&#91;BytesToRead&#93;;
    
    					OVERLAPPED O = new OVERLAPPED&#40;&#41;;
    
    					iRc = ReadFile&#40;handleSerialPort, Buffer, BytesToRead, ref BytesActuallyRead, ref O&#41;;
    
    					if &#40;iRc < 1&#41;
    					&#123;
    						//label1.Text = "Error&#58; Unable to read from " + port + " " + Convert.ToString&#40;iRc&#41;;
    					&#125;
    					else
    					&#123;
    						//label1.Text = Encoding.GetEncoding&#40;"ASCII"&#41;.GetString&#40;Buffer,0,BytesToRead&#41;;
    						if&#40;NMEADataReceived != null&#41;
    							NMEADataReceived&#40;Encoding.GetEncoding&#40;"ASCII"&#41;.GetString&#40;Buffer, 0,BytesToRead&#41;&#41;;
    					&#125;
    
    					Application.DoEvents&#40;&#41;;
    				&#125;
    			&#125;
    
    		&#125; // end btnReadFile_Click
    
    
    		#region Component Designer generated code
    		/// <summary>
    		/// Required method for Designer support - do not modify
    		/// the contents of this method with the code editor.
    		/// </summary>
    		private void InitializeComponent&#40;&#41;
    		&#123;
    		&#125;
    		#endregion
    	&#125;
    &#125;
    Wenn Du weitere Fragen hast, melde dich.

    Gruss Roman Müller
    1
     

  4. danke für die hilfe. ich denke, das wird smilie schon einiges weiter bringen.
    0
     

  5. Hallo,

    vielen Dank für eure Hilfe!!!

    Gruss smilie
    0
     

  6. guest_tom Gast
    Hallo zusammen!
    Zuerst einmal ein dickes Kompliment: feine Seite und top Forum!

    Ich bin neu in der Mobileprogrammierung und will Daten von meinem Sender über die serielle Schnittstelle (USB) in mein TytnII einlesen und anzeigen.
    Dabei bin ich auf diesen Forumeintrag gestossen.
    Danke für den Code, aber kann mir da jemand kurz Nachhilfe geben, wie ich diesen in meinem Programm einbinde und die Daten daraus anzeige?

    Danke.
    Tom
    0
     

  7. Nun, der Code ist für ein GPS-Projekt gemacht, den musst du wohl etwas modifizieren. Aber was genau sind deine anforderungen?
    0
     

  8. guest_tom Gast
    Hallo yjeanrenaud!

    Ja, GPS ist wahrscheinlich ein bisschen weit gegriffen...
    Ich verwende einen Barcodeleser um meine Produkte zu Scannen um sie dann bei mir auf dem Mobile in die Datenbank zu lesen. Das Programm steht schon fertig, ich muss lediglich noch den Leser über seriell (USB) anschliessen und die Daten einzulesen/zu verarbeiten.

    Tom
    0
     

  9. Hi Tom

    Kannst du den Leser über einen COM-Port ansteuern?
    Dann wäre System.Net.Sockets das richtige für dich!
    Inkl. asynchronem Reader!

    Gruss

    Sven
    1
     

  10. Terry Gast
    Hallo ersteinmal!
    Bin auf der Suche nach serieller (RS232) Kommunikation auf eurer Forum gestossen.
    Hab neu ein PDA gekauft und will diesen nun mit sinnvollen Programmen quälen

    Ich will mir eine Anwendung schreiben, mit der ich Daten von Geräten mit serieller Schnittstelle (z.B. Luftmesser, Waage, Wetterstation) in meinen PDA/PocketPC lesen kann.
    Ist dies mit dem normalen USBPort am PDA, über welcher auch das ActivSync geht, möglich, oder brauch ich da einen mit serieller Schnittstelle?
    Dumdidum sprach von Net.Sockets. Könnt ihr mir da mit Codebsp's auf die Sprünge helfen oder gibt es eine coole Site, wo ich mich schlau machen kann?

    ... bin noch absoluter Newbie auf diesem Gebiet "Seriell".

    Thanks folks!
    Entwicklergrüsse, Terry
    0
     

  11. Also, wenn du die USB-Schnittstelle benutzen willst um serielle Geräte anzusprechen, geht das nur, wenn du einen USB-Host besitzt. Dann kannst du einen USB2Serial-Wandler benutzen.
    Andernfalls brauchst du eine "echte" serielle Schnitstelle. Manche PocketPCs bieten diese über denselben Anschluss an, da müsstest du aber spezifisch für dein Gerät forschen. Es gibt auch CF-Karten die RS232 ermöglichen, oder aber du könntest, wohl einfacher am Luftmesser etc. einen Seriell-zu-Bluetooth-Modul installieren und dann dein Programm via Bluetoothschnitstelle auf die seriellen Daten zugreifen. Die Bluetoothverbindung wird dann einfach das Kabel ersetzen, selbst wenn dein PocketPC über keine "echte" RS232-Schnittstelle verfügt.

    Informationen über System.Net.Sockets findest du bei MSDN.
    0
     

  12. Terry Gast
    danke yjeanrenaud!
    seriell-bluetooth adapter sind jedoch relativ teuer
    wie funktioniert dann das mit dem usb-host genau? ich habe einen hp 114.
    ich muss ja lediglich daten empfangen und keine senden. die daten werden vom gerät nach der messung losgeschickt und ich öffne auf dem pda den port und lese ein. in so etwa hab ich mir das vorgestellt!?

    thx
    0
     

  13. Hmm, so weit ich weiss, hat der HP114 keinen USB-Host.
    Leider wirst du wohl also einen Seriell-Bluetooth-Adapter benutzen müssen. Ja klar, du musst nur empfangen, aber ein serielles Protokoll schreibt meistens eine Bestätigungsantwort vor. Wie dem auch sei,
    du könntest glück haben und HP hat neben USB auch serielle Verbindungen eingebaut (bei früheren Modellen gab es diese, siehe Pinouts.ru) du könntest also, mit dem entsprechenden Pinout oder einem Kabel vom Hersteller, einfach dieses verwenden statt der Bluetooth-Variante.
    0
     

  14. Terry Gast
    danke yjeanrenaud!
    demfalls wechsle ich für diese applikation glaubs besser zu meinem "alten" hp hw6515 zurück... da hab ich auch ein serielles kabel. - hauptsache ich bekomme die daten irgendwie mobile
    jetzt aber nochmals zum serial reader:
    net.sockets/system.io.ports/usw. ich habe viele bsp's und beschreibungen im internet gelesen, doch jede sagt etwas anderes und z.T. verkehrt wie die andere. ...bin ziemlich verwirrt, bzw. verunsichert :~?

    hast du ev. noch ein bsp/tipp und/oder besser, eine site mit genauen und richtigen infos für mich?!

    thx!
    0
     

  15. es kommt darauf an, was genau du brauchst. Was willst du auslesen? wie formatiert also was für ein Protokoll?
    0
     

  16. Terry Gast
    ich bekomme einen stringbuffer voll daten, der ich dann mit meinem programm auseinandernehme um die richtigen werte in den dazugehörigen gui-feldern zu präsentieren.
    0
     

  17. Ach so. Das sollte kein Problem darstellen. Am einfachsten wohl doch mit der System.IO.Ports
    Der Beispielcode zeigt dir einen seriellen Terminal. Davon wirst du dann aber nur die Hälfte benötigen.
    0
     

  18. Rudis Gast
    Danke euch für die Antworten. Leider aber werde ich trotzdem nicht ganz gescheit...
    Ich habe eine Device (Bluetooth Slave) und muss imstande sein, von diesem Daten auszulesen.
    D.h. ich muss auf die Device einen Write() und einen Read() Befehl absetzen.
    Die Device ist gepairt auf Com5 für Eingänge und auf Com6 für Ausgänge.

    Kann mir jemand auf die Sprünge helfen?
    Ich komme bis zum Port.open - muss aber den doofen PIN des Device wieder eingeben (lässt sich das verhindern?) - und kann auch etwas hinausschreiben aber sobald ich den 2. Port zum Lesen öffnen will spukt er einen Fehler (Port unknown).

    Danke für eure tolle Hilfe!
    Rudis
    0
     

Ähnliche Themen

  1. Vb.Net - Serielle Anschlüsse?
    Von Sming im Forum Programmieren
    Antworten: 0
    Letzter Beitrag: 22.09.2007, 16:13
  2. Client/Server Anwendung: welche Kommunikation
    Von wima im Forum Programmieren
    Antworten: 9
    Letzter Beitrag: 21.03.2005, 11:00
  3. SPV E-200 Bluetooth-Kommunikation mit Notebook
    Von wiba im Forum Orange SPV Forum (SP)
    Antworten: 7
    Letzter Beitrag: 30.09.2004, 16:59
  4. Qtek 2020 serielle schnittstelle??
    Von Gast im Forum Plauderecke
    Antworten: 5
    Letzter Beitrag: 29.04.2004, 23:25
  5. ""SERIELLE KOMMUNIKATION""
    Von Gästlein im Forum Programmieren
    Antworten: 6
    Letzter Beitrag: 01.10.2003, 09:55

Besucher haben diese Seite mit folgenden Suchbegriffen gefunden:

serielle kommunikation

serielle programmierung windows

rs232 programm für windows mobile

cts handshaking on output

rs232 mit windows mobile ansteuernwaagen anschluss rs 232serialport input vb2010rs232 kommunikation mit bluetoothkommunikation rs232 schnittstelle windows 7programm das serielle kommunikation heißtcom seriell programmierungpda seriell auslesenpda com port umprogrammierenkommunikation pda vb.nethandshake c foutxctsflowserielle kommunikation windowswindows terminal client serielle schnittstelle wm 6.5motorola unmarshalstructinfopocket pc beispiele serielle schnittstelle com6 visual basicunmarshalstructinfo mobilcom port ansteuern mit vb 2008vb2008 rs232 beispielevb 2008 ppc serial port vb2010 serielle daten mit rts sendenpocketpc serielle schnittstelle beispiel

Stichworte