View previous topic :: View next topic |
Author |
Message |
hhuurrkkaann
Joined: 08 Jan 2013 Posts: 14
|
serial port connection question ? |
Posted: Tue Jan 08, 2013 12:35 pm |
|
|
please help :-(
what I want to do is below?
I will receive datas (data is like "t4y2o5v3") from XXX device with PIC16f877's serial port and then I will only get the numbers of this data (4253) and send them with serial port to YYY device. I did half of it. when you write with keypad t4y2o5v3 and press enter, I transmit 4253 to XXX device. but of course in real there is no keypad and enter key there is YYY device produces datas like t4y2o5v3, t5y1o9v7 in 4800 baudrates. and what ı want to this I will get these t4y2o5v3, t5y1o9v7 datas in 4800 baudrates and send it is only numbers to XXX device... I am sharing to understand more open what I did, and what I want to do with photos below...
what I want to do?>
what I did? > http://b1301.hizliresim.com/15/8/hsdqg.jpg and;
http://a1301.hizliresim.com/15/8/hshs2.jpg |
|
|
ezflyr
Joined: 25 Oct 2010 Posts: 1019 Location: Tewksbury, MA
|
|
Posted: Tue Jan 08, 2013 1:10 pm |
|
|
Hi,
Most likely this is an easy problem.
Does the data transmitted from 'XXX' always start with a 't' (lower case t),
and does it always end with a terminator (you call it 'Enter', is it really
carriage return <CR>? If so, inside your INT_RDA interrupt handler, look
for the 't' character, and start placing incoming characters into a buffer until
you receive the termination character. For each character received, test to
see if it is a digit (IsDigit() function) before storing. Once the termination
character is received, set a flag such as RcvString = True to tell your Main()
routine to send the parsed string out to YYY.
A couple of comments. Taking photos of your PC screen to show us the code
you have written is a terrible idea. Use the 'Code' buttons, and just post it! In
your code, your INT_RDA routine is really bad! Keep your interrupt handler
as short as possible, and never use printf inside the handler. At most, set
a global flag, and do all your time consuming steps in Main().
Good Luck!
John |
|
|
bkamen
Joined: 07 Jan 2004 Posts: 1615 Location: Central Illinois, USA
|
|
Posted: Tue Jan 08, 2013 1:25 pm |
|
|
ezflyr wrote: |
and does it always end with a terminator (you call it 'Enter', is it really
carriage return <CR>? |
It could also be CR/LF (which is more common with DOS oriented platforms (sort of like Windows if the legacy aspect is considered..)
Just mentioning it...
And CR/LF is just as valid as LF/CR in terms of how a modern terminal will handle it... so be on the lookout.
-Ben _________________ Dazed and confused? I don't think so. Just "plain lost" will do. :D |
|
|
ckielstra
Joined: 18 Mar 2004 Posts: 3680 Location: The Netherlands
|
|
Posted: Tue Jan 08, 2013 1:53 pm |
|
|
Some general comments:
- #USE RS232, always add 'ERRORS' to this line so the compiler will clear error conditions for you.
- setup_spi(SPI_SS_DISABLED) is an invalid command to disable SPI. Change the parameter to FALSE.
- Why do you use the RDA interrupt? The way you have coded it now it is not how an interrupt should be written. Interrupts are short pieces of code where you get out of as quick as possible so the code in main() can continue.
- Instead of posting the code as an image it is much easier for us to read when you copy/paste it into your message. Use the 'Code' buttons to preserve the code layout.
- We don't like Proteus on this forum. There are to many bugs in it.
Note: I didn't do a page refresh before typing this reply and now see similar replies have been given already. |
|
|
bkamen
Joined: 07 Jan 2004 Posts: 1615 Location: Central Illinois, USA
|
|
|
hhuurrkkaann
Joined: 08 Jan 2013 Posts: 14
|
|
Posted: Tue Jan 08, 2013 2:32 pm |
|
|
Thanks for answers...
I didn't print screen them, took photos of screen because in the company which I am working, it is forbidden to take datas from computers...
ezflyr can you write the solution shortly that you prefer me in ccs c...
and yours question1: "Does the data transmitted from 'XXX' always start with a 't' (lower case t) " yes it always starts with "t".
question2: does it always end with a terminator (you call it 'Enter', is it really carriage return <CR>? datas is always receiving like below. It doesn't end with enter of course, I used enter key to see it in simulation. datas are always flowing with in 4800 baud like below...
t4y2o5v3
t1y3o9v6
t2y7o3v9
t3y4o9v4
.
.
.
.
thanks... |
|
|
bkamen
Joined: 07 Jan 2004 Posts: 1615 Location: Central Illinois, USA
|
|
Posted: Tue Jan 08, 2013 3:11 pm |
|
|
hhuurrkkaann wrote: | Thanks for answers...
I didn't print screen them, took photos of screen because in the company which I am working, it is forbidden to take datas from computers...
ezflyr can you write the solution shortly that you prefer me in ccs c...
|
Am I hearing you correctly that you want EZflyer to write up a solution that you can use at work?
I don't think you're going to find anyone here willing to do your job for you. _________________ Dazed and confused? I don't think so. Just "plain lost" will do. :D |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19506
|
|
Posted: Tue Jan 08, 2013 3:13 pm |
|
|
A basic starting point:
Code: |
char buffer[10];
int1 have_val=FALSE;
int8 ctr=0;
#INT_RDA
void rs232_rx(void) {
char c;
c=getc();
if (c=='t') {
if (ctr>0) {
have_val=TRUE;
buffer[ctr]='\0'; //terminate string
ctr=0;
}
}
else {
if (c>='0' && c<='9') {
buffer[ctr++]=c;
}
}
}
void main(void) {
int16 depth=0;
//your initialisation here
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
do {
if (have_val==TRUE) {
have_val=FALSE;
depth = atol(buffer);
printf(lcd_putc("\f %ld",depth);
}
} while (TRUE);
}
|
Shows 'how', but you'll have to work out how to make it work.
Best Wishes |
|
|
bkamen
Joined: 07 Jan 2004 Posts: 1615 Location: Central Illinois, USA
|
|
Posted: Tue Jan 08, 2013 3:16 pm |
|
|
Ttelmah wrote: | A basic starting point:
Shows 'how', but you'll have to work out how to make it work.
Best Wishes |
You should have a proxy address for people to mail you gifts for your graciousness.
I'm sure Mrs. Field's cookies or ?? would be nice, no?
:D
-Ben _________________ Dazed and confused? I don't think so. Just "plain lost" will do. :D |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19506
|
|
Posted: Tue Jan 08, 2013 3:37 pm |
|
|
Thanks,
The question now is whether he looks, understands, and 'pays any attention'?....
No Guarantee there are not typing errors.
It is a problem, because we have some threads where people will take a minor hint, while others need things served on a plate. He was missing a couple of really major points about what needs to happen, so it seemed worth taking the plunge and doing a basic version.
Wait for response at this point.....
Best Wishes |
|
|
hhuurrkkaann
Joined: 08 Jan 2013 Posts: 14
|
|
Posted: Wed Jan 09, 2013 6:32 am |
|
|
bkamen wrote: | hhuurrkkaann wrote: | Thanks for answers...
I didn't print screen them, took photos of screen because in the company which I am working, it is forbidden to take datas from computers...
ezflyr can you write the solution shortly that you prefer me in ccs c...
|
Am I hearing you correctly that you want EZflyer to write up a solution that you can use at work?
I don't think you're going to find anyone here willing to do your job for you. |
@ bkamen
here is an information sharing forum...
if u want to share information about questions you r useful for other people that asks you questions...but I guess your purpose is only spatchcock... so this makes u harmful...
I start to learn ccs c 2 weeks ago, and my questions can be foolish or easy for u, but if you feel that my questions are funny, dont answer me...thats all... already I didnt ask u to write the summery of the codes, I asked them to ezflyr... and Ttelmah shared starting of codes, so this is enough for me... I asked ezflyr for codes but then Ttelmah answered. So he didnt find my question about writing a part of the codes... and thanks a lot for your help Ttelmah.
in summery, if u wont help bkamen, please dont write anything.. in forums; sometimes writing anything makes people more useful... |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19506
|
|
Posted: Wed Jan 09, 2013 7:18 am |
|
|
Seriously, that is a bad attitude.
Bkamen, is one of the long term 'good helpers' on the board. The point he was trying to make, is that you really started quite badly, by posting 'code pictures' (if you have to take pictures, then retype the code yourself), and not reading some of the basic things about the forum before starting....
I decided that on the basis of previous threads, it was likely to be completed with less annoyance all round, by actually showing the key big problems (which ckielstra had already pointed out), so would post some code, but I had similar doubts to him, and these have increased with your attitude. |
|
|
ezflyr
Joined: 25 Oct 2010 Posts: 1019 Location: Tewksbury, MA
|
|
Posted: Wed Jan 09, 2013 7:34 am |
|
|
Hi hhuurrkkaann,
Sometimes we on the forum can seem a little bit harsh in our criticism, but
you need to consider it as "tough love". I've been around here for a few
years and I can honestly say that there are no mean-spirited members that
participate on a regular basis. Rather, there are a lot of guys that give up a
lot of their personal time to help new users like you. It's always a balance,
though, between providing too much help, and just enough to get a newbie
thinking on his own, and learning to use the compiler.
In the beginning I said this was a "simple" problem, but that is from the
perspective of an experienced user. Your project, for a beginner, is a bit
more advanced than I would generally recommend. Since you chose it, and
it's your project, the onus is on you to perform the "heavy lifting", not us!
Good Luck!
John |
|
|
hhuurrkkaann
Joined: 08 Jan 2013 Posts: 14
|
|
Posted: Wed Jan 09, 2013 8:13 am |
|
|
thanks ezflyr
in fact I didnt write anything for your explanations. and of course you can find others questions easy or hard. I have no experience with ccs c, my experience is PLC and I shares my experiences to other people that asks me questions but I always talk about the issue that they asked to me, I never say that "I don't think you're going to find anyone here willing to do your job for you." Am I said "ezflyr can u do my job for me?" no! I only said that "ezflyr can you write the solution shortly that you prefer me in ccs c..." is this question so foolish or hard to write? I write lots of codes for help in my experienced business. here's purpose is sharing experience...already Ttelmah write the codes that he thinks to help my question. This was what I wanted, of course nobody dont have to write the codes for me. I only asked that if it is possible or not... |
|
|
|