Jeszcze tu masz buga a nawet kilka: [syntax=c]//char Str; // nie nadużywaj zmiennych globalnych - to zło //int Count = 1; ... // gdzieś w konstruktorzę bądź w inspektorze dla ComPort'a ustaw StopString='\n'; void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count) { AnsiString Str; // Read Str (jak string a przekazywałeś char, ostrzeżeń nie...
kolego ale zdejmij punkty z tego co załączyłeś jak ma Ci ktoś pomóc... -------edit------- tu masz poprawiony kodu nie przeglądałem dokładnie i nie wnikam w działanie tego programu, błąd miałeś tego typu że twój comport w object inspector miał wpisaną właściwość port na stałe jako string "Com3" a jak korzystasz z ComComboBox'a to ta właściwość powinna...
A nacisnąć F1 i zerknąć do pomocy to nie łaska? procedure Delete(var S: String; Index: Integer; Count: Integer); Description Removes a substring from a string. In Delphi code, Delete removes a substring of Count characters from string S starting with S
Ale co konkretnie cię interesuje albo z czym konkretnie masz problem... Zasada jest bardzo prosta, połączenie przez port com wymaga jego konfiguracji, i albo robisz to ręcznie na sztywno, albo tworzysz klasę w której go konfigurujesz, tak czy inaczej musisz podać pewne parametry początkowe portu. Potem czekasz na wystąpienie zdarzenia OnReceive (a dokładniej...
No ok, ale w pierwszym poście napisałeś, że dajesz jako comport string a funkcja otwierająca port chce int. Więc ze stringa robisz losowy numer i pewnie wychodzi że nie ma takiego portu. Może najpierw napisz program, który wypisze numer portu jako int dla podanego stringa. Czyli podajesz jako argument 'com7' dostajesz liczbę inna niż -1. To powinno...
type TForm1 = class(TForm) ComPort: TComPort; [...] ComPort.Open; Str := 'Test' + #13#10; ComPort.WriteStr(Str); //wysyła string if ComPort.Connected then ComPort.Close [...] lub : Var b : byte; [...] b:=25; ComPort.Write(b,1) //wysyla pojedynczy bajt lub ich ciąg [...]
Spróbowałem rozbudować warunek o dodatkowe LF tak jak poniżej Dodano po 7 Patrzę teraz jeszcze na graficzne ustawienia kontrolki ComPort (MSComm) i mam tak: DTREnable na True, EOFEnable na False, Handshaking na 0-comNone, InBufferSixe na 1024, NullDiscard na False, ParityReplace tutaj mam "?", RTSEnable mam na False, SThreshold mam na 0. Może tutaj...
po odebraniu 4 bajtow chce sprawdzac czy ktorymkolwiek nastapilo prezklamianie(bit parzystosci) ,jak to zrobic,do komunikacji uzywam comport. znalazlem w helpie przyklad Example procedure TForm1.ComPortError(Sender: TObject; Errors: TComErrors); begin if ceRxParity in Errors then ShowMessage('Paity error occured'); end; niestety nie wiem jak go uzyc...
Dobra, napisałem takie funkcje do wyświetlania komunikatu w razie błędu: [syntax=csharp] private SerialPort comPort = new SerialPort(); public enum SerialError { RXParity }; private RichTextBox _displayWindow2 = null; comPort.ErrorReceived += new SerialErrorReceivedEventHandler(SerialEr... private void DisplayError(string msg)...
Nie działa :( [syntax=delphi] unit Oscyloskop_comport; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, CPort, StdCtrls, ExtCtrls; type TForm1 = class(TForm) BtnOtworz: TButton; Settings: TButton; Wyslij: TButton; EdtMsg: TEdit; ComMemo: TMemo; CBNewLine: TCheckBox; ComPort: TComPort; Image1: TImage;...
Dane nie są odczytywane przez komponent Memo (służy on do prezentacji/przechwytywania danych). Dane odczytywane są z portu za pomocą: String Text = ComPort->ReadString(); i przypisywane do zmiennej typu string (w tym przypadku do Text); Spróbuj zamiast string'a zrobić zwykły char :) A jeżeli znak jest znakiem ASCII (a tak raczej będzie w...
OK, teraz poszła instalacja. Dlaczego gdy do projektu wstawię ComPort to podkreśla na czerwono w USES: Cannot resolve unit name 'CPort' at line...
Witam! Staram się napisać wtyczkę do programu Centrafuse odbierającą dane z magistarli iBus. Od dwóch dni walczę z wykraczaniem indeksu poza granice tablicy. Dzieje się tak, kiedy wtyczka odbiera widomości: 80 06 BF 19 0F 35 00 1A 80 05 BF 18 1A 14 2C 80 05 BF 18 1A 0E 36 80 05 BF 18 1A 09 31 80 05 BF 18 1A 08 30 Oczywiście napewno jest ich więcej,...
oj chyba nie... catch to kawałek funkcji [syntax=vb]Try ; Catch ex As Exception End Try [/syntax] a linia [syntax=vb]MsgBox(ex.ToString)[/syntax] po wystąpieniu błędu który jest wtedy przechowywany w zmiennej ex która jest zamieniana przez polecenie .toString w text i wyświetlana w MsgBox'sie. natomiast linia [syntax=vb]SerialPort1.Write(TB_Wyślij.T...
Zapomniałem dodać deklaracji zmiennej Pamiec : var Pamiec:string; Konwersji żadnej nie robie. Z tego co czytałem to w Delphi domyślnie string odpowiada AnsiString. Dlatego wszystko deklarowałem jak widać.
Procedura odbioru wygląda tak , ale gdybym było coś nie tak to z resztą ramek byłby problem. Zawsze jest tak z zerami wycina przy odbieraniu gdy zamiast zer dostaje jedynki i inne znaki to jest OK. procedure TMainfrm.ComPortRxChar(Sender: TObject; Count: Integer); var ComTekst: AnsiString; begin ComPort.ReadStr(ComTekst, Count);//odczytujemy String...
Witam a ja zaproponuję jeszcze inne rozwiązanie twojego problemu ;) zdefiniuj sobie zmienne globalne: var CanRead : Boolean = True; RxBuffer: String = ''; w OnRxChar robisz tak: procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); var str: String; begin if not CanRead then Exit; ComPort.ReadStr(Str, Count); RxBuffer := RxBuffer + str; if...
Witam, naskrobałem taki oto kod z wykorzystaniem operacji atomowych, semafory i wywaliłem z funkcji pomiarów z czujników delaye. Rozbiłem te funkcje na mniejsze, a czas oczekiwania na zakończenie konwersji odliczam timerem i wystawiam do main odpowiednią flagę pozwalającą na pobranie wartości. Funkcje dtostrf wrzuciłem w blok atomowy, dzięku czemu skończył...
Witam szanownych kolegów Na wstępie powiem, że jestem początkującym programistą Delphi (tyle co w szkole nauczyli podstaw), a z Rsem w ogóle nie miałem do czynienia. Chce napisać program który będzie zbierał sygnał od miernika (sygnał napięciowy 0-2V). Na początek poszukałem jakiś przykładowych programów do obsługi RSa, żeby w ogóle zapoznać się z tematem,...
const MyMESSAGE = WM_USER + 100; type TMyMESSAGE = record Msg: Cardinal; Message: PChar; Length: Longint; Result: Longint; end; // tą sekcję umiść w miejscu gdzie masz definicje zmiennych i procedur TForm1 // typu public i private - czyli dodajemy jeszcze sekcję protected protected procedure HandleMyMessage(var Msg: TMyMESSAGE); message MyMESSAGE;...
Witam! Używam Comport z sukcesem już dosyć długo, ale nigdy nie korzystałem z ReadStr, no i uzywam go w Delphi, ale mam nadzieję że się dogadamy :D: Stan portu masz sprawdzany tylko na początku programu w zdarzeniu FomCreate, a otwierasz go pózniej. Wrzuć na fomę komponent ComLED, w inspektorze obiektów ustaw jego właściwośc Comport na Comport1, LedSignal...
Jeśli masz program w uC napisany przez Ciebie to nie rozumiem w czym problem. To Ty ustalasz protokół transmisji i to Ty wybierasz sobie format zapytań i odpowiedzi. Przykładowo: uC - urządzenie podrzędne PC - urządzenie nadrzędne 1. Wysyłasz zapytanie z PC do uC w formacie np: T1 lub T2 lub P 2. uC odbiera to za pomocą pętli interpretującej, wyglądającej...
Więc przerób na przyszłość na: [syntax=delphi]procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer); var Date1,Date2,Row,Str:string; begin ComPort.ReadStr(Str,Count); Memo.Lines.Add(Str); while Length(Str)>0 do begin Row:=Parse(Str,#13); Label1.Caption:='wynik odczytu Date1= '+Copy(Row,1,1);//początek danych Label2.Caption:='wynik odczytu...
Witam. Ściągnij sobie komponent comport. Na forme wstaw 2 x memo, 1 x edit, 3 x buton i comport. 'button1 do łączenia i rozłączenia 'button2 do wysyłania 'button3 do ustawienia portu 'edit1 do wpisania tekstu jaki chcesz wysłać 'memo1 do odebrania tekstu 'memo2 do "pomocy" ustawione jako niewidoczne 'zdarzenie do ustawienia portu procedure TForm1.Button3Click(Sender:...
Wpisuję: Int := 1 + #13#10; ComPort1.Write(Int); Wpisz : var int : array[0..2] of byte; begin int[0]:=1; int[1]:=13; int[2]:=10; ComPort1.write(int,3); end;
jezeli czytasz port asynchronicznie (invoke) to zlap Event typu OnReadComplete czy tam OnDataReadComplete, przerob to co przeczytales i wyczusc bufor. Nie znam VB ale po skladni widze , ze to .net. znalazlem takie cos : Imports System.IO.Ports Public Class MyFirstCOMProgram Public Delegate Sub StringSubPointer(ByVal Buffer As String) Dim WithEvents...
moja metoda którą odbieram dane pomiarowe z MEMS [syntax=vbnet] Private Sub comPort_DataReceived(ByVal sender As Object, ByVal e As IO.Ports.SerialDataReceivedEventArgs) Select Case CurrentTransmissionType Case TransmissionType.Text Dim msg As String = comPort.ReadLine() _type = MessageType.Incoming _msg = msg DisplayData(MessageType.Incoming, msg +...
:) Delphi to chyba tylko Borland:) co innego jak bym napisał Turbo Pascal oto mój kod: unit UART; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, CPort, StdCtrls; type TForm1 = class(TForm) BtnOtworz: TButton; BtnSettings: TButton; BtnWyslij: TButton; EdtMsg: TEdit; ComMemo: TMemo; CBNewLine: TCheckBox;...
witam Po napisaniu programu w oparciu o artykół : http://4programmers.net/Delphi/Artykuły/... napotkałem na błąd, który wyskakuje za każda próbą naciśnięcia przycisków otwórz, i wyslij,a także przy próbie zatwierdzenia settingu cportu. ten błąd to http://obrazki.elektroda.net/23_12358278... różni...
Witam wszystkich, od kilku dni męczę się z pewnym problemem w Delphi. Zagadnienie było już omawiany wiele razy ale nigdzie nie znalazłem rozwiązania mojego problemu, ale do rzeczy : Przesyłam sygnał z atmegi8 poprzez UART/USB do programu napisanego w Delphi 5. Program korzysta z komponentu TComPort i przedstawia go jako string. Memo pokazuje mi liczbę...
nie wiem co tam masz w kodzie Delphi, ale procedura wzięta żywcem z przykładowych programów ComPort'a działa bez zarzutu. Sprawdzone wiele razy. procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer); var Str: String; begin ComPort.ReadStr(Str, Count); Memo.Text := Memo.Text + Str; end; Mając zawartość bufora...
Witam, Dokonuję pomiaru dwóch temperatur przy użyciu DS18B20. Dane przesyłam po RS232 (MAX232) - docelowo chciałbym wysyłać cztery parametry na komputer. Podczas próby konwersji ciągu string z RS232 na zmienną typu "integer" lub "float", otrzymuję komunikat: EConvertError: is not valid integer value. Sprawa wygląda tak: próbowałem już konwersji zarówno...
Witam serdecznie. Chciałbym nadmienić, że w temacie Javy jestem zupełnie początkujący, nie miałem też styczności z transmisją danych do portu USB... ale do rzeczy... Chce stworzyć program który będzie mi sterował wyjściami danych gotowego układu FTDI 245RL jednak mam problem aby układ przepisał dane. Pierwszą dana która wpisuje do portu od razu uzyskuje...
Więc tak zacząłem pisac program w delphi do połaczenia sie przez port com z programamtorem jest narazie spoko tylko że jak wysyłam jakieś dane przez port to narazie jest dobrze i teraz sie zaczyna problem dane zostały wysłane ale niemam żadnej odpowiedzi czy może mi to ktoś wyjaśnić?? załaczam READ którego niema procedure TForm1.ComPortRxChar(Sender:...
Zrób tak : begin ComPort.ReadStr(RevS, Count); //odczytujemy String z Portu ComTerminalMemo.lines.add(Revs); //Wyswietlamy go w Memo end;
Ale jesteś świadomy tego, że w każdych przykładach od ST, niezależnie od tego czy to F1, F4, L4 czy cokolwiek innego, jest dokładnie ten sam numer VID i PID? przykład dla F1: #define USBD_VID 0x0483 #define USBD_PID 0x5740 #define USBD_LANGID_STRING 0x409 #define USBD_MANUFACTURER_STRING "STMicroelectronics" #define USBD_PRODUCT_FS_STRING...
OK! Wiadomo co masz odebrać, ale podpowiedz jak jest wysyłana twoja ramka. 1) jednorazowo? 2) cyklicznie, co pewien czas? 3) w odpowiedzi na polecenie, ktore wysyłasz do urządzenia? 4) ma stałą liczbę bajtów? Chodzi o to żeby w programie wykryć początek/koniec ramki. Samo porównanie jest trywialne jeżeli ramkę składać w string(ciąg znaków) Jeżeli założyć,...
Właściwie to wszystko poprzednio już napisałem. Po zrobieniu tego wszystkiego o czym poprzednio pisałem w obsłudze zdarzenia OnPacket piszesz np. [syntax=delphi] procedure TForm1.ComDataPacket1Packet(Sender: TObject; const Str: String); begin chart1.Series[0].Add(StrToFloat(Str); end; [/syntax] lub robisz co chcesz ze stałą Str w której masz tylko tą...
Witam ja chciałbym odświerzyc trochę temat bo nie ma sensu zakładac takiego samego, mianowicie również próbuje uzyskac ATR karty ale trochę w inny sposób : procedure TForm1.Button3Click(Sender: TObject); var x : integer; begin if comport.connected = true then begin ComPort.SetRTS(True); // set RTS to high ComPort.SetRTS(False); // lower RTS signal x...
Witam ponownie Proszę o radę #0D , #0A
Witam wszystkich Na początku chce zaznaczyć, że dopiero zaczynam zabawę z RSem i programowaniem. Chce napisać program który odczytywałby sygnał napięciowy (powiedzmy 0-2 VAC) i pokazywał go w formie wykresu. Póki co do wykresu nie doszedłem wiec to zostawmy. Troszkę zmodyfikowałem gotowy program znaleziony na necie, dzięki pomocy z innego tematu odpaliłem...
Chodzi o komunikacje z kartami chipowymi. Jest to transmisja asynchroniczna i raczej zadne ramki nie wchodza w gre. Probowalem czegos takiego ale to niezdaje rezulatu. function TForm1.SendCommand(CmdStr: string): string; var Data: string; Operation1: PAsync; InputC:integer; begin InitAsync(Operation1); try ComPort.WriteStrAsync(CmdStr,...
Gotowy unit do obsługi serial port dla win ce z pod lazarusa. [syntax=delphi] unit Win32CESerialCom; interface uses Windows, Classes, SysUtils, LResources, ExtCtrls; type TComBuf=array[0..255] of byte; TWin32CESerialCom = class(TObject) private hComm: THandle; public Connected:Boolean; function OpenPort(ComPort:String;BaudRate,ByteSiz...
procedure ClearBuffer(Input, Output: Boolean); wystarczy helpa przejrzec ps poza tym function ReadStr(var Str: String; Count: Integer): Integer; przekazuje do Str bajty, nie bity
Napisałem sobie prosty program na procesor, który po otrzymaniu danego znaku przez RS232 wystawia jedynkę na określonym pinie. gdy podłączam układ do komputera i w aktywnym oknie Hyper Terminalu naciskam np. 1 na klawiaturze, to procesor wykonuje określoną akcję, zgodną z tą zaprogramowaną. Jednak, gdy wywołam z delphi procedurę: ComPort.WriteStr('1');...
A otworzyłeś port? Zobacz sobie przykład do tej kontrolki. Coś takiego znalazłem. Przeanalizuj. Private Sub Command1_Click() CommX1.BAUDRATE = 19200 CommX1.COMPORT = 1 CommX1.OPEN End Sub Private Sub Command2_Click() CommX1.Close End Sub Private Sub Command3_Click() CommX1.SEND Text3.Text + Chr(13) ' send data End Sub...
Dodano po 1 [syntax=basic4gl] $regfile = "m32def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0 $baud = 1200 Config 1wire = Portb.0 Dim Adresy(16) As Byte Dim Temp As Byte Dim Temp_wew As String * 6 Dim Temp_zew As String * 6 Dim W As Byte Dim...
Witam, ostatnimi czasy mam syndrom ciągłego braku czasu i nie odwiedzałem forum... wracając do kodu który podałeś wygląda na poprawny... chociaż nie powinienneś stosować Twoj_ComPort.Connected:=True; zaraz po utworzeniu obiektu to po primo a po primo 2 to staraj się korzystać z metod klasy czyli Twoj_ComPort.Open; a nie po przez ustawienie jej właściwości....
Zamieszczam źródło programu sterowania urządzeniem podłączonym do RS232 i sterowanym poprzez plik *.txt na serwerze www. Może to nie na temat ale program zawiera w sobie: - pracę z wątkiem (TThread) - obsługę RS232 - obsługę pliku *.txt - obsługę połączenia z serwerem www czyli wszystkie (nawet więcej) potrzebne w Twoim projekcie informacje. Weź z niego...
comport wylicza nawet otwarte porty z tego co widac zainstalowane porty pobiera cobie z rejestru... procedure EnumComPorts(Ports: TStrings); var KeyHandle: HKEY; ErrCode, Index: Integer; ValueName, Data: string; ValueLen, DataLen, ValueType: DWORD; TmpPorts: TStringList; begin ErrCode := RegOpenKeyEx( HKEY_LOCAL_MACHINE,...
comport odczyt danych string delphi7 comport instalacja comport
sprężarka lodówce odkurzacz electrolux grzeje esp8266 połączenie
vestel firmware 17mb230 statyczny balans bieli
Instrukcja obsługi kotła Termet MiniMax Turbo Panasonic telefon stacjonarny – brak obrazu na wyświetlaczu LCD, identyfikacja CLIP działa