Write Some Blocking Code Much Like The "Serialport.ReadLine"?
Oct 10, 2009
I am running a socket client and need to write some blocking code much like the "Serialport.ReadLine" code which blocks for X amount of time before either throwing a time out exception or returning the string revived. I need to do the same thing with the client socket, basically bloxcking until a CRLF has been detected or a time out has occurred. What is the best way of doing this?
I have a program that is hooked to an external device via rs232. I can send and receive messages to this device just fine using the ReadLine() method of the serial port. This allows me to send a command and wait for a response in a synchronous manner. However, when I start the program I need to check the status of the device. If the device is in a sleep state, off, or on, I send a command and get a response, however, if the machine is unplugged, I get nothing so my program will hang waiting for a response before continuing. I would like to abort the readline after 1 minute and display a message that the external device is not connected or having a problem, etc. and allow the program to load. The command I use to check the device is:
Do Until Mid(balanceStatus, 1,3) = "S S" 'This is the return command that the status is read spBlance.Writeline ("S")
balanceStatus = spBalance.Readline 'This will cause the program to hang if the external device is unavailable[code]....
That readline is causing the program to hang. So I need a way to abort if it exceeds a certain time (around 1 minute). I was trying to use the DataReceived Event of the serial port, but I need to wait for a response before continuing and DataReceived fires on its own thread.If there is a way to abort the thread, I was thinking of doing a timer control.
Am I being dense here? StreamReader.ReadLine states that: A line is defined as a sequence of characters followed by a line feed (" "), a carriage return (" ") or a carriage return immediately followed by a line feed (" ")
i am wrting a modbus RTU code for communicating with devices I intend to end modbus query with wight bytes to be sent 1 , 3 , 0, 3,0,5, &h79, &hc5 the third and fifith bytes which are zero are not actually writen into the commport How to do this ?
I have one project that I need help writing that I have spent months trying to write with no luck. Anyway so here is my question. I want to write a program that can display a phones filesystems that is connected to my computer by a serial port. I would like to be able to Read/Write files and stuff if possible. I have tried many ways of doing this so this is my last resort.
I have a basic confusion between serial port and network TCP communication to devices.
My colleague uses a vb struct as the nice easy to read way to create a packet to send out via a serial port. Like this basic code sample below of his vb.net serial call followed at bottom by my c# tcp beginsend network call.
Can I use a struct as well to call out for my TCP network beginsend? By looking at the signature of BeginSend(Byte[] as the beginning of the signature for that method call to send data to a connected socket, I don't see myself being able to use a struct.
Public Structure PacketRecord Dim SourceAddress As Integer Dim DestinationAddress As Integer Dim Length As Integer
I'm trying to enable a timer within a SerialPort.PinChanged even is reached but the timer tick even never starts. Has anyone ever tried this? I am using vb.net 2008 express so I dont know if that is the issue or not.
I've seen this great example of serial communication in VB.NET[URL]..I try to use it in a project I am working on but somethings are not clear to me.1: Now the send and received data is shown in one RichTextBox but I would like to split this into two RichTextBoxes (RtbSend and RtbReceived).It is unclear to me how and were data is assigned to the RichTextBox?
2. the received data is shown in the Richtextbox as one long line, I would like to get a new line for every send message.So for example: I I send "test" four times, I would like to see:The example describes that "comPort_DataReceived" is executed when data is waiting in the buffer. Where can I see the eventhandler responsible for this? How does it know data is waiting?The problem is this kind of coding is a bit to difficult for me. I want to understand the code before I implement it into my project. I understand most of the code but this is unclear to me.
I am using Visual Basic 2005 and Serialport class. My target device is a WinCE 5.0 Emulator.When I send bytes using serialport.write(byte(),offset,count), the serial port always output "0D 0A" between the bytes and after the bytes sending complete. like this:34 0D 0A A5 5A 0D 0AHow to stop ouput the '0D 0A"? It seems like a terminator "", I have tried to search the serial port settings but cannot find the proper setting. The seiral port is 19200, no parity, one stop bit, 8 bits.
Imports System.IO.Ports Imports System Imports System.Windows.Forms
i have a notification j-query plugin .. i taste it in my page (working 100%)but when i want to use it in a event SqlDataSource1_Deleted with the response.write method it does not work
Protected Sub SqlDataSource1_Deleted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlDataSource1.Deleted Response.Write("<script type='text/javascript'> showNotification({message: 'This is a
I have set up a serial port program, where the serialport writes from textbox1 then reads to textbox2 when you push a send button.The problem is the serial port seems to have its own writetimeout function. here is an example of my error:
say I write the string "AABBCCDDEEFF" then click send textbox2 will then display "BBCCDDEEFF" or just "DDEEFF"
what seems to be happening is that it will kick in whenever it wants to and just read portions of the text sometimes it will even seperate it out into two or three lines.
This only happens about 1 out of 5 times when I hit send, but it is an error that I would still like to have fixed.
what is wrong with my code and I get no feedback from my button click event, i have imported. ( code Below) and i have tied differrent combinations of the code without sucess.maybe add extra to my code for the list to show open Port or closed ports.
i am asking that can i use c# language to implement "actions" fired on "click side events" such as mouse over the reason for this stupid question is that i remember some syntax of registering functions for particular events of formview, which are call when the event occurs (yes there ispostback involved" is something like the above possible for client side events using c# or even vb.net
trying to write some VBA code to assemble different SQL code according to user settings on an Access form. The code below is not the actual code but shows the problem I have been having very simply.
Dim SQLsearch1 As String Dim SQLsearch2 As String Dim A As Integer
I need to read Line by Line from a .txt file stored on c:ext.txt. the file has 10 lines which must be read one at the time, random and never the same line. Once this reaches the then line a messagebox should display done and clear the program. What I am stuck is the random part and how to display the random line.
I am looping through a text file and reading and then parsing each line.. then, inserting into a sql server. The problem is, I am getting every other line. Any thoughts? I read another post on here that is similar and it says that that person was calling the ReadLine twice... which makes sense. I just cannot spot where it is happening.
Private Sub btnUpdateRSR_Click(sender As System.Object, e As System.EventArgs) Handles btnUpdateRSR.Click ' Get RSR File lblStatus.Text = "Getting RSR File" Application.DoEvents()
Retrieving strings from a serial port with ReadLine works fine as long as the line ends with a linefeed chr$(10).However if no more strings are available to be read, Do Loop or For Next hang up waiting for the linefeed which never occurs.I believe using chr$(0) in place of linefeed would still work with strings ending with a linefeed..Just that the linefeed would be output.I have the complete MSDN Library.
I have to work with network program with vb 2010. I'm trying to show the ReadLine stream in label text but it won't show.
Dim tcpCli As TcpClient = tcpList.AcceptTcpClient() 'claiming tcp listener to accept the tcp client Dim ns As NetworkStream = tcpCli.GetStream ' assign ns as network stream and assign as client to get nw stream
Dim fileName As String = fileloc Using reader As New System.IO.StreamReader(fileName) While Not reader.ReadLine() Is Nothing
[code]....
THe problem is it reads in every other line.I assume its because its reading line one in the 'while' then the next line being stored during the loop....
I have this Private MonthlyStreamReader As StreamReader Private Sub ButtonMonthlyFavorite_Click(sender As System.Object, e As System.EventArgs) Handles ButtonMonthlyFavorite.Click
[Code]...
and am trying to get that label to work with every item of the combobox. I do not know what property or code of the combobox makes this work correctly, but so far only the first index of the data file gets recognized by the combobox. If I click the next item in the combobox while running the program, it goes to my error message.
When I read a text file as the code below the first line returns as nothing. I checked the text file and it contains 3 lines before the read. After the read the first line is blank the following 2 lines have values.
im using as usual vb express 2010 right now on winxp, but planning to make the programs fully suported on vista & win7.
First heres my structure on public class: Structure cartas Dim numero As Integer
[Code].....
and the richtextbox4.text has paragraphcs or vbnewlines however u wanna call them.
Saving it on a txt file looks like this: 7:John:Marcelo:this is first paragrah[]this is second paragraph[]and this is third
note i use [] to simulate the squareish paragraph thingie that is used in a textfile. since if i try to copy it here, it will automatically convert itself into an actual paragraph.
Anyways when i try to load the file using readline i only get the first paragraph displayed and all the rest of this specific text unexistent.
I am using this code bellow to read each line of a file doing stuff then repeat to the end in a while loop. My problem starts after that since I have to exit this loop then go back to it and start the process all over again 100+ times and I cant go back in since it knows I hit "Nothing" or EOF. Is there a way to do this without opening and closing the record 100+ times??
vb inputRecord1 = inStreamReader1.ReadLine() While (inputRecord1 IsNot Nothing)
The subject sucks, but the problem is straightforward. I have an existing WCF service. There are a small series of functions, currently. One or two of the functions will need to be performed with a bit of security, for which I need a username and password. The username and password will be checked on the server side against a webservice running on localhost. One alternative is to not use the localhost webservice for the validation, but then I wouldn't have a question, so ignore that.
The way the webservice will work, I was thinking that I would use an invisible web browser, navigate to the REST-style URL, and wait for the response. It's the bit about waiting for the response that is causing me trouble. Normally, I'd wait for the document comleted event raised by the browser control, but since this is initiated by the call of a WCF service function, that won't really work. The WCF function call can't 'wait' for anything, nor will it receive the event. Once the WCF function reaches the End Function statement, it is over and done with, and returns. The response from the webservice won't have arrived by then, so that won't work. There are two typical solutions to this, one of which is horrible to the point of being unworkable.
1) A busy wait, or spin wait, where the WCF function goes into a tight loop waiting for the browser event to be raised. This is never a good idea, and is particularly terrible in this case, because the WCF service is running on a web server, so the negative impacts of a busy wait are FAR worse than normal.
2) Use something like a Mutex in the WCF function such that the function launches a thread, the thread immediately grabs the Mutex, then begins the navigation. The WCF function waits on the Mutex, which would mean blocking without spinning, and the document completed event pulses the Mutex to release the WCF function so that it can return the proper response. This seems technically improbable, as it stands.
The problem is only a slight variation on a very typical problem, yet it presents some interesting problems. Windows is event driven, but a WCF service function is not. A callback across a WCF (at least across this one), isn't an option, events aren't an option, so it all comes down to the function starting a process, then blocking without spinning, until the process comes up with an answer.
I have a class that has purely static Methods and properties. I am calling an async method on the class "Load" that asks a web service for a chunk of data, which then fires an event that executes the return method, "LoadCompleted". I have no idea how long the call is going to take (the difference between calling the "Load" method, then the "LoadCompleted" getting called).
I would like to block the application from proceeding any further until the callback method has been raised (as the app will try and get stuff from this class, which isn't populated until the "LoadComplete" method sets the data).