[ VBscout @ 04.03.2009. 15:45 ] @
Pozdrav!!!

Pravim program u C#2008 koji treba da komunicira preko rs232 sa nekom drugom nezavisnom aplikacijom.
Uradio sam lako pisanje na odredjeni port i sa tim nemam problema, ali vec odavno se mucim uraditi nit koja ce non stop citati sta dolazi na port i kada dodju 4 bajta to treba ispisati na labelu.

Google-ao sam dosta bezuspesno i probao razna resenja i pregledao teme na forumu ali nisam uspeo.
A vreme za izradu programa uskoro istice pa ako je moguce da mi neko pomogne.
Da napomenem da prvi put radim nesto ozbiljnije u C#.

Unapred zahvalan!

[ radoica @ 04.03.2009. 16:35 ] @
BackgroundWorker Class:

http://msdn.microsoft.com/en-u...entmodel.backgroundworker.aspx
[ icobh @ 04.03.2009. 18:30 ] @
NeŇ°to ovako:
Code:
private SerialPort prtCOM = new SerialPort();

prtCOM.DataReceived += new SerialDataReceivedEventHandler(prtCOM_DataReceived);

private void prtCOM_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
           MessageBox.Show("Data received");
}
[ VBscout @ 04.03.2009. 20:53 ] @
Pokusavao sam mnogo puta tako,

ali za poziv bilo koje Read metode u telu prtCOM_DataReceived ne mogu dobiti ni priblizno onome sto je poslato.
Logicno bi bilo da radi sledece

Code:

private SerialPort prtCOM = new SerialPort();

byte[] buffer = new byte[4];
int numBytes;

prtCOM.DataReceived += new SerialDataReceivedEventHandler(prtCOM_DataReceived);

private void prtCOM_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
        numBytes = prtCOM.Read(buffer, 0, 4);
        MessageBox.Show(Convert.ToString(buffer)); 
}

ali nece, dobije se ispis SystemByte[]

Znaci problem je samo citanje.

Hvala u svakom slucaju!

[ gavra20 @ 05.03.2009. 14:29 ] @
Mislim da je problem u Convert.ToString(buffer).
Probaj ovako da napravis string od niza byte-ova:
Code:

StringBuilder byteString = new StringBuilder(); 
foreach (byte b in buffer)
{
    byteString.Append(string.Format("{0:X2}", b));
}

MessageBox.Show(byteString.ToString());
[ deerbeer @ 05.03.2009. 14:42 ] @
A mozda ovako :
Code:
 
numBytes = prtCOM.Read(buffer, 0, 4);
string strBytesString =  System.Text.ASCIIEncoding.ASCII.GetString(buffer) ; 
[ VBscout @ 05.03.2009. 17:00 ] @
NASAO SAM PROBLEM!

Naime, program koji treba da komunicira sa mojom aplikacijom nema uradjeno
kako treba slanje poruke na odredjeni serijski port, dok citanje ima.

"Nisam verovao!!!!" da ce biti problema dok nisam tek sad probao preko HyperTerminal-a
sta dolazi na port, i tako izgubio ogromno vreme programirajuci serisjku komunikaciju u VC++ i C#.

U svakom slucaju, mislim da je neophodno uraditi konverziju koju je napisao deerbeer(koja meni radi).

I NE ZABORAVITE KORISTITE HyperTerminal ILI NEKI DRUGI SLICAN PROGRAM!!!

Hvala u svakom slucaju!!!

Pozdrav!
[ gavra20 @ 05.03.2009. 17:00 ] @
Moze i tako ako VBscout hoce da mu se ispisu ASCII karakteri od byte-ova koje je dobio, a ne sami byte-ovi.
[ gavra20 @ 05.03.2009. 17:03 ] @
A izgleda da mu bas to treba .