Make A Simple Class That Reads Data From A SerialPort
Aug 17, 2009
I'm trying to make a simple Class that reads data from a SerialPort.The Device returns a number of lines of Strings.[code]However running this code in a Form with one TextBox Control (txtLog) Allways results in the "The operation has timed-out." Exception.[code]
I have a USB device which creates a Virtual Serial Port on Windows. I am using VB.Net to write and read from the port. My device responds with specific sized set of bytes, but I am finding that SerialPort.Read(byte-array,offset,number-bytes) does not return the full number-bytes but it also does not timeout or generate an exception. Repeated calls return additional fragments (up to 3 calls required). Python code using pySerial does not have the same problem.So, what am I doing wrong here? Am I expecting too much?
Some scenarios are:I write a command to the port and expect to get 4 bytes in response. I get 1 byte first and then 3 bytes on the subsequent call.I write a command and expect 21120 bytes in response. I get 1, 12671 and then 8448 bytes in 3 calls to read from the port.
Here are some excerpts from my code:
Private Sub SetupVirtualSerialPort() Dim portName As String = "COM" + (m_DeviceContext * -1).ToString Const baud As Int32 = 9600 '7680000 Const parity As Parity = parity.None
I'm having a bit of trouble with the SerialPort class I'm hoping someone might be able to shed some light on. Specifically, writing to the port appears to work without incident. However, reading data is proving problematic. Initially I thought it was my hardware, but testing suggested the fault lied in software. I was able to confirm this with the installation of a loopback device on the port. It tends to be missing bytes, inserting bad bytes, and shifting bytes randomly.
I am using VS2008(VB.NET) and SQL Server2000. I want to make an application which reads files and Insert Data into SQL. If first file has some error. Write into log and Move Next file for Proceed. How can I do that.
I decided to make a simple temperature converter (C to F vise versa) for class since I already had made a calculator. But for some reason, it won't work because it can't convert from string to double. How do I fix it?
This is my 50th attempt to read the memory and probably my last attempt if I don't succeed now T_T I've been trying to write a class that reads from the memory, simply by creating wrappers around the Win32 APIs but I just can't get it to work.
This is how I currently am trying to read the memory from calc.exe:
Public Function ReadMemory(ByVal hProcess As IntPtr, ByVal lpBaseAddress As IntPtr, ByVal nSize As Integer, ByVal lpNumberOfBytesRead As Integer) As String Dim tmpBuff As Single = 0
I have a hardware which sends out packets containing 17 bytes to the comport in bursts of 3. the little test VB that I have written receives and displays the bytes in a line of 17 bytes long and works fine until it gets to around 170th packet, then it starts to mix up (looks like shifting the data left) the bytes shift mostly by one digit sometimes by two. then it will continue to give almost a packet correct and a packet shifted for about 50 packets. Then it will correct itself for a long while, but then the speed at which it receives drops. All the packets are sent 3 times, and before things go wrong (within the first 170 packets) the packet counter shows that it receives 3 packet each time but after the problem it goes to 2 packet per burst and then to one.
If i close my VB monitoring program say at packet 165 and immediately open it again, it wont go wrong for another 170 packets, this points the finger at VB. I have check my hardware, there is no problem with that.The program reads port - waits for 17 bytes - once 17 has been received it will go and buffer the packet in an array. In fact they are 2 arrays but printing fro either results in the same problem.I have tried whatever i could think of but to no avail, i am wondering if some kind of house keeping needs to be done to clear something... I am sorry the program is a bit messy but I have been making many changes to find out what the problem is - my code below:[code]
A function of my app is to encrypt a file with TripleDES. The problem is that when the app reads the data, encrypts it, and writes it back, the new data is appended. I need it to overwrite the original contents.Here is the code:
Dim DES As New System.Security.Cryptography.TripleDESCryptoServiceProvider[code]............
Trying to make a simple browser with some simple addon's. What Ive done is setup a menu(forum) for the user to enter their email providers web address and it will save it in a xml file. When they click on the email link, it should load the email xml iformation and place that info in the tb_html.text and navigate. I keep getting a null exception and im not sure what going on here. Here is the code:
Browsers: Private Sub btn_Email_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Email.Click 'Load Action Dim SavedEmailObj As Storage
I have to make a program that reads a txt file after reading it, show it in a richtext box and in another tab make the average of the grades the input received sort it by the student id and then in the same rtb sort it by the average of their grades, and finally save it on a new text file.
The text file input is something like this
12 3 10.0 6.9 7.3 19 2 6.7 9.3 10 3 4.5 9.3 4.5
[Code]...
As you noticed in the input the first number is the student ID, the second number is the number of tests made by the student, and the other 3 numbers are grades, in the output the first number is the student ID, the second number is the average of the tests, and the other 3 numbers are grades, I don't have a problem opening and saving a text file and neither creating a tab with 2 RTB , my problem is how do I tokenize or read the input line by line, i guess that i need to use the split function but I don't know how to implement it into the program.
I am writing an app that reads from the com port, filters the data, then writes to the text box, then immediately starts over. This all takes place in an endless " do while" loop within the "start" button code. I also have a end button too which closes the com port and ends the program. Some other buttons are present also to change the filter settings.Problem is when I click start, data is logged, but none of the other buttons work. Also some of the text boxes are "see through" and dont look like thy have updated with the rest of the form.
I have the following code, which reads data from xml file and displays it in the datagridview. It all works fine:
[Code]...
Instead of showing read data in datagridview, i'd want to read the data from xml file into one dimensional array: X(Impedances) Or is there a way to read value from this datatable into string variable without getting data from datagridview? The point is: i'd want to scan through all "Impedance" values (which are read from xml file) and compare with value y to catch the nearest value to y. How to do that?
Every 5 to 10 seconds I receive 5-12 bytes of data (confirmed w/Hyperterminal). I can open the com port(btn1), read bytes(btn3) until bytes to read = 0, but then i'm stuck; the data received event doesn't seem to respond. If I close the serial port(btn2), re-open i can read more data until bytes to read = 0 then stuck again. I tried several suggestions for threads and delegate and invoke but none worked. (WIndows XP, VB 2008)
I want to use IO.ports.serialport to receive ASCII data from an instrument (A Luxmeter for those interested). So far, i've been unable to read any single byte from the instrument using the IO.ports.serialport.A terminal window shows the datastream just fine, and I've used MScommlib to read the data without problems. I just had other problems with the latter, so I thought I'd give this IO.ports.serialport a try.The code runs fine, no errors. It just doesn't receive anything.Bytestoread stays 0 forever.I distilled the code to it's bare essence. What am I missing? Is it something obvious, or did I completely misunderstand the whole concept? (Which is not unlikely..)I did check the obvious, of course: settings, baudrate, cable is connected, instrument is sending, etc.[code]
I should create a program for a Pocket PC that reads & writes data from an MSAccess database located on a desktop computer (pocket PC and desktop one are connected through a Wi-Fi connection).Is that possible?
Hi, I'm working on a program that reads text entered into a textbox and creates a list of items by separating entries by commas. Everything is working fine, except, because I am using an array to store the items in the list, I have a limited number of entries. This is only a problem because, as it is written currently, each comma counts as an individual entry. Therefore, users can enter ",,," for example, and it would use up 3 places in the array.
I'm looking for a way to check to make sure there is text after the comma before adding an entry. I've attempted to use the .substring command to check the character after, which works until it gets to the last character. Because there is no character after that, it will give an error.
Here is my code for extra clarity:
Public Class frmMain Dim intCounter As Integer 'Stores the # of commas in the string Dim Messages(49) As MessageProperties
I am writing a small application to see what data I am sending and receiving to my COM port (for a small hardware project based on url..).The problem I want to activate a "Serialread" or "SerialWrite" procedure as soon as data is waiting in the receive or send buffer.I have some basic skills so before I start digging in I would like to get some advice. Can I use a addhandler (I have read something about this on the internet but have to clue how to use it) or something else? Is there a way to check if data is in the buffer ready to be read or write??
I have a program where I need to periodically save the data to a database (if the computer suddenly shutdown) and also send the same data to a serialport.Alla data that is going to be sent and saved resides in two classes.his needs to be done every 1/10s.What's the best way to manage this?
I am writing a serial application using VB .net Framework V4 , where I use a background worker to Read a file and send it to a serial port using SerialPort1.writeLine method. The BackgroundWorker1.ProgressChanged Event handler sub Updates the Line Number to a TextLabel and adds each line sent to a RichTextBox using RichTextBox1.AppendText() method on main form (Form1).
The problem arises at 115200 Bauds (and higher),may be because now the text is updated real fast on the form an unhandled Exception in BackgroundWorker1.ProgressChanged Event handler sub occurs. Otherwise at lower baudrates ex: 9600,19200 etc. Application Runs Perfectly Fine.
i want to receive data to my pc from external hardware but i don't know how to do it since i am new to vb.net. the code in vb.net to receive data using serial port rs232.
Recently we have connected one bluetooth device which receive data from our serial device. The bluetooth device further transmite this data to a Windows Mobile which is bluetooth enable. Baud rate of whole system is 19200 with 7 data bit and 1 stop bit.When we send command to serial device through bluetooth device it is accepting the command and respond accordingly. but some of data byte of string is desplay as question mark (?).But in case we connect the serial device directly to PC, the string received is correct.[code]Response given by Serial Port is "?09?D03?A D?
Recently we have connected one bluetooth device which receive data from our serial device. The bluetooth device further transmite this data to a Windows Mobile which is bluetooth enable. Baud rate of whole system is 19200 with 7 data bit and 1 stop bit.When we send command to serial device through bluetooth device it is accepting the command and respond accordingly. but some of data byte of string is desplay as question mark (?).[code]...
I am writing a small app that is retrieving data from a device connected to a virtual com-port. I connect without problems to the device using the settings 9600-8-N-1.
I need to send the command <esc>MS , the device then sends back the data to a computer. I have tried this using Hyperterminal with success. I also did this with Excel and VBA. I used the MSComm32 Active X control:
MSComm1.Output = Chr$(27) + "M" + "S" + Chr$(13)
Msgbox(MSComm1.Input)
This made the data from the device pop up in a messagebox. I am writing a winforms app in vb.net, using VS2005. I have a form, on which I have a Placed a SerialPort control, named sp. My sample code is as follows:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e
[CODE]...
This returns the error message "Error: expecting a command". I have done som tests in HyperTerminal, and have concluded with:
-If I dont send <esc>, I get error "Expecting a command"
-If I send wrong command (ie MD instead of MS) i get error "Bad command"
Based on this, I suspect that I don't pass the escape character correctly to my device. So I wonder how to do this?
I'm currently working in .NET 2.0 Visual Basic. The current project is an Active Directory Wrapper class library within which I have a Searcher(Of T) generic class that I wish to use to search the underlying directory for objects.
[Code]...
In short, I want to offer some kind of Expression feature to my users, unless it is too much work, as this project is not the most important one and I don't have like 2 years to develop it. I think that the better thing I should do is to write something like CustomExpression that could be passed in parameters to some functions or subs.
I recently started working with Vb.net and I am just trying to create a class that has two properties one is StoreName and the other is StoreImage. What I am trying to do is figure out how to create objects using this class? Each object will be a Store that has a corresponding Name and Image to go with it. Here is the code I have written so far although I am not sure if im headed in the write direction with the function. Also not sure if it matters but I am using ASP with VB?
Imports Microsoft.VisualBasic Public Class Store Dim NameofStore As String Dim ImageofStore As Image