 |

|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 06 28, 15:29. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Programavimas » RS232 loopinimas ir info atkūrimas.. Pagalbos su C++ kodu :)
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
 |
 |
 |
RS232 loopinimas ir info atkūrimas.. Pagalbos su C++ kodu :) |
Parašytas: 2011 11 22, 14:52 |
|
|
|
Sveiki gal galėtumėt padėt su kodu? Idėja tokia kad užloopinta RS232 jungtis siunčia info ir gauna, kiek išmėginau taip veikia, bet atvaizduot info nesigauna, meta vieną simbolį ir nieko daugiau, gal yra būdas iš buferio į Ekraną info išvest?
Kodas: |
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <conio.h>
#include <windows.h>
int main(int argc, char* argv[])
{
char INBUFFER[100];
char OUTBUFFER[10];
int n;
DWORD bytes_read = 0; // Number of bytes read from port
DWORD bytes_written = 0; // Number of bytes written to the port
HANDLE comport = NULL;
int bStatus;
DCB comSettings;
COMMTIMEOUTS CommTimeouts;
strcpy(&OUTBUFFER[10], "Labas \n\r\0");
// Open COM port
if ((comport =
CreateFile("\\\\.\\COM20",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL)) == INVALID_HANDLE_VALUE)
{
// error processing code goes here
}
CommTimeouts.ReadIntervalTimeout = 100;
CommTimeouts.ReadTotalTimeoutMultiplier = 100;
CommTimeouts.ReadTotalTimeoutConstant = 100;
CommTimeouts.WriteTotalTimeoutMultiplier = 100;
CommTimeouts.WriteTotalTimeoutConstant = 100;
bStatus = SetCommTimeouts(comport,&CommTimeouts);
GetCommState(comport, &comSettings);
comSettings.BaudRate = 2400;
comSettings.StopBits = ONESTOPBIT;
comSettings.ByteSize = 8;
comSettings.Parity = NOPARITY;
comSettings.fParity = FALSE;
bStatus = SetCommState(comport, &comSettings);
while(!kbhit())
{
bStatus = WriteFile(comport,
&OUTBUFFER, // Outgoing data
10, // Number of bytes to write
&bytes_written, // Number of bytes written
NULL);
bStatus = ReadFile(comport,
&INBUFFER, // Incoming data
100, // Number of bytes to read
&bytes_read, // Number of bytes read
NULL);
printf(" %c " , '&INBUFFER');
}
CloseHandle(comport);
return 0;
|
|
|
|
|
|
 |
 |
RS232 loopinimas ir info atkūrimas.. Pagalbos su C++ kodu :) |
Parašytas: 2011 11 22, 15:12 |
|
|
|
- jau rašiau, kad tavo problemos ne spausdinime, o laiko diagramose. Tu suki amžiną ciklą ir vis tą patį perdavinėji "ant viršaus", o tekstinę eilutę reik spausdinti su "%s" formatu, nes "%c" skirtas vienam simboliui.
pasiūlymai:
a) į ciklą įdėk kokiį delay() arba visai be ciklo perduok-priimk.
b) gali mėginti perdavinėti eilutę tik po vieną simbolį.
c) naudokis DEBUG'eriu ir pažiūrėk kas yra buferyje.
Kodas: |
strcpy(&OUTBUFFER[10], "Labas \n\r\0"); |
- dar tu negerai kopijuoji, o būtent už masyvo ribų, pradedant 10'u elementu.. turėtų būti:
Kodas: |
strcpy(&OUTBUFFER[0], "Labas \n\r\0"); |
 |
|
|
|
|
 |
 |
RS232 loopinimas ir info atkūrimas.. Pagalbos su C++ kodu :) |
Parašytas: 2011 11 22, 16:40 |
|
|
|
Ačiū, ne taip buvau supratęs strcpy funkciją.
Radau paprastą sprendimą:
Kodas: |
cout << INBUFFER << endl;
|
Dar vienas klausimas, ar gali atsirast info praradimas jei prie loop prijungiu kelis LED, perdavimui vizualizuoti? Prieš prijungiant LED dirbant su HyperTerminalu raidės grįžta nepakitusios, o su LED vos kas kelinta tik tvarkingai grįžta, manau dar prie to prisidėjo netvarkingas litavimas... |
|
|
|
|
 |
RS232 loopinimas ir info atkūrimas.. Pagalbos su C++ kodu :) |
Parašytas: 2011 11 22, 17:32 |
|
|
|
blogai gryzta info su ledais, nes perkrauni grandine... Be to ar jungi ledams nuosekliai varzas? Ar itampos impulsai nenukrenta zemiau plius minus 3,5V? |
|
_________________ Nieko taip lengvai nedaliname, kaip patarimus... |
|
|
|
 |
RS232 loopinimas ir info atkūrimas.. Pagalbos su C++ kodu :) |
Parašytas: 2011 11 22, 17:49 |
|
|
|
Tikslių matavimų nedariau, reikės osciloscopą pasijungt...
Taip ir galvojau, kad grandinė perkrauta, esmė tame, kad dabar esu Suomijoj, tai reik susirast laiko laboratorijoj savų įrankų neturiu čia ir reikia pirkt komponentus kurie čia nesveikai brangūs... 3 ledai, laido truputį ir Kempų, ir RS232 lizdą - 11e kainavo ...
Manau užteks, priežastį žinau, dalyką atsiskaitysiu ir užteks... Ačiū už pagalbą  |
|
|
|
|
 |
RS232 loopinimas ir info atkūrimas.. Pagalbos su C++ kodu :) |
Parašytas: 2013 07 01, 10:26 |
|
|
|
Puiku. Kodą rašau c sintakse. nes labiau mikrovaldikliams pritaikytą
O kaip čia randamas fizinis porto adresas? CreateFile("\\\\.\\COM20", čia suprantu sukuriamas naujas lėjeris, per kuri programa netiesiogiai gauna ir siunčia duomenys. |
|
|
|
|
 |
 |
RS232 loopinimas ir info atkūrimas.. Pagalbos su C++ kodu :) |
Parašytas: 2013 07 01, 11:00 |
|
|
|
Šitas kodas yra Windows`ams pritaikytas ir kurtas, naudoja windows sukurtą biblioteką. Ištikrųjų tai nepamenu iš kur tą kodą traukiau, bet apie CreateFile funkciją yra aprašyta Visual C++ MSDN svetainėj:
[http://msdn.microsoft.com/en-us/library/ff802693.aspx]
Panašiai ir čia, realiai tai šitas kodas jau kaip ir atgyvenęs, reiktų vadovautis naujais Windows standartais
Kaip ir minėjau čia yra Windows biblioteka sukurta Microsoft tam, kad nereiktų naudot bios.h bibliotekos serialinėm jungtim Windows platformoj. Jei programini mikrovaldiklius reiktų atitinkamai žiūrėt to mikrovaldiklio manualus ir pagal juos rašyt kodą (dažnu atveju mikrovaldikliai turi integruotą serialinę jungtį, todėl darbo būna labai mažai rašant kodą [/url] |
|
|
|
|
 |
 |
RS232 loopinimas ir info atkūrimas.. Pagalbos su C++ kodu :) |
Parašytas: 2013 07 01, 11:31 |
|
|
|
čia kodą noriu rašyti Windows'ams, info noriu apdoroti su savo parašytą programą, per hiperterminalą gaunu duomenis iš mikrovaldiklio. be to biblioteka bios.h jau nėra įtraukta į naujus IDE debugerius. ir ji tinkama tik fiziniam com protui, o ne virtualiam. virtualu nuskaito tai per usb, ir sukure failai vinduskai ir jis simuliuoje ta kom portą, ben taip suprantu |
|
|
|
|
|
 |
Google paieška forume |
|
 |
Naujos temos forume |
|
 |
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
 |
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
 |
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
 |
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
 |
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
 |
Football Training Kit
Football Training Equipment,
Football Skills,
Football Training |
|

|
 |