PDAclub.pl - Forum użytkowników technologii mobilnych
Windows Mobile (Classic, Professional, Standard), Windows Phone 6.x oraz 7/8.x/10 => Oprogramowanie PPC => Dla programistów => Wątek zaczęty przez: Emati w Sierpień 06, 2009, 00:27:43
-
Może mi ktoś powiedzieć, jak mozna w prosty sposób komunikować się przez wirtualnego coma (bluetooth) za pomocą lazarusa?
-
Spróbuj może otworzyć plik o nazwie: com1: do odczytu lub pisania :)
procedure Tform1.button1click (sender : tobject);
var plk : textfile;
begin
AssignFile (plk, 'com1:');
AppendFile (plk);
WriteLn (plk, 'test');
closefile (plk);
end;
-
Niestety, ale kompilator nie wie, co to jest appendfile ;]
procedure TForm1.Button1Click(Sender: TObject);
var
plik:textfile;
begin
assignfile(plik,'com6');
reset (plik);
writeln(plik,edit1.text);
closefile(plik);
end;
Po uruchomieniu takiego programu pisze mie, ze nie można znaleźć pliku
-
Potrzebujesz bibliotek takich:
mnStreams, mnCommClasses, mnCommStreams, mnCommThreads
Są do pobrania na stronie lazarusa, jak nie znajdziesz to wpisz tam w szukajce.
A odwołanie się do portu wtedy wygląda tak (przykładowy program do obsługi GPS z ustawianiem portu - jest razem z unitami do pobrania):
unit MainForms;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Dialogs, StdCtrls,
ExtCtrls, Menus, IniFiles, interfaces,
mnStreams, mnCommClasses, mnCommStreams, mnCommThreads, GPSUtils, GPSThreads;
type
{ TForm1 }
TForm1 = class(TForm)
ConvertBtn1: TButton;
DecimalEdit: TEdit;
DMEdit: TEdit;
Label2: TLabel;
Label3: TLabel;
DMLbl: TLabel;
ListBox1: TListBox;
MainMenu1: TMainMenu;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
PortEdit: TPanel;
BaudRateEdit: TPanel;
StartBtn: TButton;
Label1: TLabel;
ConvertBtn: TButton;
StopBtn: TButton;
GPSTimer: TTimer;
procedure ConvertBtn1Click(Sender: TObject);
procedure ConvertBtnClick(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure GPSTimerTimer(Sender: TObject);
procedure MemoChange(Sender: TObject);
procedure MenuItem1Click(Sender: TObject);
procedure StartBtnClick(Sender: TObject);
procedure SendTimerTimer(Sender: TObject);
procedure StopBtnClick(Sender: TObject);
private
FCancel: Boolean;
FCommStream: TmnCommStream;
FThread : TmnGPSThread;
procedure CancelThread;
public
end;
var
Form1: TForm1;
implementation
{ TForm1 }
procedure TForm1.SendTimerTimer(Sender: TObject);
begin
end;
procedure TForm1.StopBtnClick(Sender: TObject);
begin
CancelThread;
GPSTimer.Enabled:= False;
end;
procedure TForm1.CancelThread;
begin
FCancel := True;
if FThread <> nil then
begin
FThread.Terminate;
FThread := nil;
FCommStream := nil;
end;
end;
procedure TForm1.StartBtnClick(Sender: TObject);
begin
if FThread = nil then
begin
FCommStream := TmnCommStream.Create(True, PortEdit.Caption, StrToInt(BaudRateEdit.Caption));
FCommStream.ReadTimeout := 10;
FCommStream.ReadTimeoutConst := 100; //or use QueMode
// FCommStream.QueMode := True;
FCommStream.ConnectMode := ccmRead;
FCommStream.Connect;
FThread := TmnGPSThread.Create(True, FCommStream);
FThread.EndOfLine := #13;
FThread.FreeOnTerminate := True;
FThread.Resume;
end;
GPSTimer.Enabled := True;
end;
procedure TForm1.MemoChange(Sender: TObject);
begin
end;
procedure TForm1.MenuItem1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
CancelThread;
end;
procedure TForm1.GPSTimerTimer(Sender: TObject);
var
Info:TGPSInfo;
begin
Info := GPSInfo;
if Info.Source <> '' then
begin
ListBox1.Items.Add(Info.Source);
ListBox1.Items.Add(GPSToMAP(Info.Decimal));
ListBox1.ItemIndex := ListBox1.Items.Count - 1;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
Application.Terminate;
end;
procedure TForm1.ConvertBtnClick(Sender: TObject);
begin
DMEdit.Text := GPSDecimalToDM(StrToFloat(DecimalEdit.Text));
end;
procedure TForm1.ConvertBtn1Click(Sender: TObject);
var
Info :TGPSInfo;
begin
GPSPrase('$GPGGA,204852.000,4038.0022,N,07401.2578,W,1,6,1.64,31.7,M,-34.3,M,,*5B', Info);
DecimalEdit.Text := Info.Source;
DMEdit.Text := GPSToMAP(Info.Decimal);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
IniFile:TIniFile;
begin
IniFile:=TIniFile.Create(Application.Location + 'Options.ini');
PortEdit.Caption:=IniFile.ReadString('Options', 'Port', 'COM6');
BaudRateEdit.Caption:=IniFile.ReadString('Options', 'BaudRate', '4800');
end;
initialization
{$I MainForms.lrs}
end.
-
A możesz mi podać dokładniej, gdzie ściągnąć te biblioteki?
Znalazłem temat na ich forum o odczycie danych z gpsa, ale i tak nie wiem, skąd dorwać te biblioteki...
-
Po wpisaniu dowolnej z bibliotek w google, dostajesz link do forum lazarusa, konkretnie do tematu z linkami, uzytkownik zaher7 to wrzucił i to są jego programy.
-
Hmm, no dobra, możesz mi jeszcze powiedzieć, jak odpalić te jego programy, co tam są na tym forum w lazarusie?
Niestety z lazarusem sobie za bardzo nie radze ;]
-
To może mi ktoś pomóc?
-
Emati ale jak można Tobie pomóc bardziej? Masz źródła, przykład. Ja się za Ciebie Lazarusa nie nauczę. Reszta to nauka, nauka i nauka. W tym sporo pisania, testów i ciągle nauka.
Natomiast jak masz problem z odpaleniem przykładów - pisz do ich autora, jest szansa, że pomoże.
Dodatkowo masz całkiem obszerne forum lazarusa na stronie lazarusa :P, tam zadawaj pytania.
-
Chodzi mi o to, że nie wiem po prostu, jak dodać do lazarusa te biblioteki:
mnStreams, mnCommClasses, mnCommStreams, mnCommThreads
-
Tak jak w przykładzie, wystarczy, że dopiszesz do klauzuli uses i dorzucisz pasy do katalogu z programem.
-
Dobra, albo ja jestem tępy, albo nie wiem, gdzie są te biblioteki...
Możesz mi je wrzucić na forum?
Bo jak przeglądałem tamto forum lazarusa i te linki, to nie znalazłem zadnych bibliotek o tych nazwach...
-
http://forum.lazarus.freepascal.org/index.php?PHPSESSID=53df9e046cd7cc93e91b0c62e74658e3&topic=6351.msg29780#msg29780
z tego posta:
http://minilib.svn.sourceforge.net/viewvc/minilib/trunk/lib/
http://minilib.svn.sourceforge.net/viewvc/minilib/trunk/Demos/GPSEmu/
http://minilib.svn.sourceforge.net/viewvc/minilib/trunk/Demos/GPSMon/
wchodzisz i tam w jego wrzutach masz wszystko co potrzeba, wybierz MINILIB, dostaniesz:
http://minilib.svn.sourceforge.net/viewvc/minilib/trunk/MiniComm/source/
-
Heh, no fakt, wielkie dzięki za pomoc, naprawdę dzięki :)
Teraz chyba sobie już poradzę z tym wszystkim ;]