473,396 Members | 1,772 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

Help! serial communications programming in c

Hello,I met a question when I wrote the program.I want the program can
transmit the data frame continuosly through the RS232 when the
communication has been interrupted.But I don't know how to write. I
don't know how to record.Who can give me hand?Thanks very much!

Mar 11 '06 #1
8 2444
In article <11**********************@e56g2000cwe.googlegroups .com>,
vicky <lj******@163.com> wrote:
Hello,I met a question when I wrote the program.I want the program can
transmit the data frame continuosly through the RS232 when the
communication has been interrupted.But I don't know how to write. I
don't know how to record.Who can give me hand?Thanks very much!


The closest that the C language itself comes to knowing about
RS232 or serial communications, is that there are certain
provisions about default buffering if the implementation can
prove that a stream is a "terminal". C does not define what
a "terminal" is, though, so the connection between that and
"serial" is pretty weak.

This newsgroup, comp.lang.c, only deals with that which is
covered in the C standards. Hence, this is not an appropriate
newsgroup for asing about RS232 or serial communications.

I would redirect you to a more appropriate newsgroup, but you
did not mention anything about which OS you are using,
so I cannot tell you at the moment which would be the appropriate
place. Probably one of the Windows or Unix newsgroups.

When you go to post your question to a more appropriate newsgroup,
I would suggest that you explain your question in more detail.
I do not understand what you mean when you say that you want
the program to transmit the data frame "continuously" when the
communications has been interrupted. I am not sure if you are
talking about the bit level, or the character level, or some kind
of packet level. I cannot tink of any circumstances under which
continually retransmitting the same bit or byte would be useful,
and retransmitting the same packet would normally not be done
until you were sure the other end had not received it. I do not
know how you intend how to detect that "communication has been
interrupted".

I have to wonder whether you are reinventing things, and whether
you would perhaps be better off using an already written
transmission program such as x-modem, z-modem, or kermit.
--
I was very young in those days, but I was also rather dim.
-- Christopher Priest
Mar 11 '06 #2
I mean that when my program is ended or my computer is closed
suddenly,the program can transmit data from the former when I reset.And
the OS is Windows.The data I want to transmit is byte.

Mar 11 '06 #3
"vicky" <lj******@163.com> writes:
I mean that when my program is ended or my computer is closed
suddenly,the program can transmit data from the former when I reset.And
the OS is Windows.The data I want to transmit is byte.


Read and understand <http://cfaj.freeshell.org/google/> before you
post to Usenet again.

Your question is off-topic. Try a Windows-specific newsgroup (I don't
know which one). And when you do, try to be clearer about what you're
asking.

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
Mar 11 '06 #4
Where is Kenny McCormack - when we need him?

Mar 11 '06 #5
In article <11**********************@j33g2000cwa.googlegroups .com>,
vicky <lj******@163.com> wrote:
I mean that when my program is ended or my computer is closed
suddenly,the program can transmit data from the former when I reset.And
the OS is Windows.The data I want to transmit is byte.


This is, as I indicated, not on-topic in comp.lang.c .

What you want to do cannot be done with RS232 serial communications.

RS232 provides no mechanism for the remote end to signal that
it has received any particular byte, so there is no way for the
serial port to detect whether a particular byte was transmitted
successfully or not.

Typically when you are transmitting serial data, your application
queues a number of bytes to be transmitted and lets the serial driver
handle the details -- so your application would not typically
know which byte had been reached before the application
unexpectedly quit. Your application could choose to submit
only one byte at a time and wait for the data write call to
return, but you would almost certainly lose a *lot* of performance
that way, as you would be expecting the computer to handle
3840 interrupts per second.

The only realistic way to handle what you appear to want to do,
is to use an application protocol that is able to negotiate with
the remote end to detect where to resume. If you go to that trouble,
you would usually also want the application protocol to detect
transmission errors and automatically re-send when bad data was
detected or when bytes accidently got lost. Two well-established
protocols that can do these things are kermit and z-modem. The
z-modem protocol is small enough to be practical for an experienced
programmer to re-implement, but you do not appear to be an experienced
programmer, so I would suggest that you simply download kermit
or a file transfer program that is able to handle the z-modem protocol.

kermit for unix is free, but the official kermit program for Windows
is not. You can download a time-limited version of it (kermit95) from
http://www.columbia.edu/kermit/k95.html .
--
Programming is what happens while you're busy making other plans.
Mar 11 '06 #6
jo*********@yahoo.com wrote:
Where is Kenny McCormack - when we need him?


In most people's killfiles. Eager to join him? You're on the right path.

Brian

--
If televison's a babysitter, the Internet is a drunk librarian who
won't shut up.
-- Dorothy Gambrell (http://catandgirl.com)
Mar 11 '06 #7
On 10 Mar 2006 21:19:43 -0800, in comp.lang.c , "vicky"
<lj******@163.com> wrote:
Hello,I met a question when I wrote the program.I want the program can
transmit the data frame continuosly through the RS232 when the
communication has been interrupted.But I don't know how to write. I
don't know how to record.Who can give me hand?Thanks very much!


Unfortunately this is offtopic in CLC, since it is hardware-specific,
and operating system specific. You should ask in a group specialising
in your OS.

Mark McIntyre
--
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it."
--Brian Kernighan

----== Posted via Newsfeeds.Com - Unlimited-Unrestricted-Secure Usenet News==----
http://www.newsfeeds.com The #1 Newsgroup Service in the World! 120,000+ Newsgroups
----= East and West-Coast Server Farms - Total Privacy via Encryption =----
Mar 12 '06 #8
On Sat, 11 Mar 2006 17:14:10 +0000 (UTC), ro******@ibd.nrc-cnrc.gc.ca
(Walter Roberson) wrote:
In article <11**********************@j33g2000cwa.googlegroups .com>,
vicky <lj******@163.com> wrote:
I mean that when my program is ended or my computer is closed
suddenly,the program can transmit data from the former when I reset.And
the OS is Windows.The data I want to transmit is byte.
This is, as I indicated, not on-topic in comp.lang.c .

What you want to do cannot be done with RS232 serial communications.

RS232 provides no mechanism for the remote end to signal that
it has received any particular byte, so there is no way for the
serial port to detect whether a particular byte was transmitted
successfully or not.

RS232 as usually implemented today, just async (serial) data, no.

If you can still find (or make) a proper full RS232 implementation,
you could reasonably use CTS for this. RTS/CTS were most often used
for blocks (today, packets), but there is nothing in their definition
that would make them unsuitable for bytes. In fact I seem to recall
some terminals (one possibly rogue neuron is claiming VT100) did use
them for byte-granularity flow control.

For that matter, you could stretch a point and use (simulated) DCE
clocking for this. But good luck finding a serial interface today that
allows direct access to clocks even in hardware much less the OS,
unless of course you build your own from the ground up.

<snip> The only realistic way to handle what you appear to want to do,
is to use an application protocol that is able to negotiate with
the remote end to detect where to resume. If you go to that trouble,
you would usually also want the application protocol to detect
transmission errors and automatically re-send when bad data was
detected or when bytes accidently got lost. Two well-established
protocols that can do these things are kermit and z-modem. The
z-modem protocol is small enough to be practical for an experienced
programmer to re-implement, but you do not appear to be an experienced
programmer, so I would suggest that you simply download kermit
or a file transfer program that is able to handle the z-modem protocol.
This is certainly a better general solution.
kermit for unix is free, but the official kermit program for Windows
is not. You can download a time-limited version of it (kermit95) from
http://www.columbia.edu/kermit/k95.html .


Or PPP, for which there is an opensource implementation. And today
rather wider recognition and support. I love(d) Kermit, but it just
isn't needed nearly as much today, and thus not as much known.

- David.Thompson1 at worldnet.att.net
Mar 20 '06 #9

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

21
by: Dave | last post by:
After following Microsofts admonition to reformat my system before doing a final compilation of my app I got many warnings/errors upon compiling an rtf file created in word. I used the Help...
9
by: Tom | last post by:
A question for gui application programmers. . . I 've got some GUI programs, written in Python/wxPython, and I've got a help button and a help menu item. Also, I've got a compiled file made with...
4
by: Sarir Khamsi | last post by:
Is there a way to get help the way you get it from the Python interpreter (eg, 'help(dir)' gives help on the 'dir' command) in the module cmd.Cmd? I know how to add commands and help text to...
6
by: wukexin | last post by:
Help me, good men. I find mang books that introduce bit "mang header files",they talk too bit,in fact it is my too fool, I don't learn it, I have do a test program, but I have no correct doing...
3
by: Colin J. Williams | last post by:
Python advertises some basic service: C:\Python24>python Python 2.4.1 (#65, Mar 30 2005, 09:13:57) on win32 Type "help", "copyright", "credits" or "license" for more information. >>> With...
7
by: Corepaul | last post by:
Missing Help Files When I enter "recordset" as the keyword and search the Visual Basic Help index, I get many topics of interest in the resulting list. But there isn't any information available...
5
by: Steve | last post by:
I have written a help file (chm) for a DLL and referenced it using Help.ShowHelp My expectation is that a developer using my DLL would be able to access this help file during his development time...
8
by: Mark | last post by:
I have loaded Visual Studio .net on my home computer and my laptop, but my home computer has an abbreviated help screen not 2% of the help on my laptop. All the settings look the same on both...
1
by: trunxnirvana007 | last post by:
'UPGRADE_WARNING: Array has a new behavior. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="9B7D5ADD-D8FE-4819-A36C-6DEDAF088CC7"' 'UPGRADE_WARNING: Couldn't resolve...
0
by: hitencontractor | last post by:
I am working on .NET Version 2003 making an SDI application that calls MS Excel 2003. I added a menu item called "MyApp Help" in the end of the menu bar to show Help-> About. The application...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.