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
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...
No tak mam, bo podałem kod programu do wglądu. Odhaczyłem część kodu bo robiłem próby z różną konwersja i nic nie wymyśliłem, wywala bład przy próbie konwersji z strtoint(revs). No to powiedzmy że program powinien wyglądać tak: [syntax=delphi] procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer); var RevS: String; i: integer; begin ComPort.ReadStr(RevS,...
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...
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)...
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 [...]
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...
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...
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...
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...
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...
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ć.
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! 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,...
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,...
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:...
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...
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ł...
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...
[syntax=delphi]unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ComPort; type TForm1 = class(TForm) CheckBox: TCheckBox; ProgressBar: TProgressBar; RShow: TEdit; Memo: TMemo; ComPort: TComPort; procedure ComPortRxChar(Sender:TObject;Count:Integ... private procedure SetProgressBar(Value:Integer);...
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;
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...
:) 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, 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 ponownie Proszę o radę #0D , #0A
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 +...
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ć,...
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,...
Zrób tak : begin ComPort.ReadStr(RevS, Count); //odczytujemy String z Portu ComTerminalMemo.lines.add(Revs); //Wyswietlamy go w Memo end;
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 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...
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...
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ę...
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...
Witam, próbuję czytać dane z pewnego urządzenia podłączonego do portu COM. Posługuję się wielokrotnie już tu opisywanym komponentem TComPort. Również kod obsługujący poszczególne akcje wiele razy się przewinął. Jest tylko taki problem, że w większości przypadków programy w końcu zadziałały tak, jak chciał autor, a u mnie się zacina. Ale do rzeczy: Po...
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:...
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...
Witam. Sprzętowo jest ok. Gdy korzystam z cporta "normalnie" tzn wybierajac go z palety komponentów, jest ok, odbiera dane ładnie. Problem mam z dynamicznym stworzeniem transmisji:( KeinXor zxa parę godzin zamieszczę kod, jest poza domem:/ Dzięki:) Dodano po 4 O to ten kawałek kodu. W pierwszej części dynamiczne utworzenie comporta, w drugiej procedura...
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...
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ą...
Nie wiem co macie źle w swoich projektach. Wstawię swój kod, który działa na 100 %. Jedno co mi się w nim nie podoba to jak odczytuje dane na przykład ze skanera kodów kreskowych to wstawia mi do Memo 8 znaków, dalsze są w kolejnej linii. Próbowałem to rozwiązać ale na razie bez rezultatu. Udało mi się rozwiązać problem wstawiania tylko 8 znaków w 1...
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...
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...
Witam! Mam następujący problem. Otóż złożyłem następujący układ komp(rs232) => max232 => atmega8 => LCD. Dane wysyłam z Delphi przy pomocy kontrolki ComPort. Po wysłaniu znaku do Atmegi , na wyświetlaczu oprócz znaku, pojawia się dziwny znak III na początku linii i w żaden sposób nie mogę go usunąć. http://obrazki.elektroda.pl/5016473400_1...
comport odczyt danych string delphi7 comport instalacja comport
kontroler muzyczny panewka korbowy ursus katalog filtrów
gdzie montowaćć zawór mieszający delphi repair
Škoda Octavia Classic 1.6 SR high oil consumption without smoke – causes and checks Resetowanie pralki Bosch VarioPerfect 7 - instrukcja krok po kroku