Hi all, I am new to delphi.My application needs to act as client and send some commands to create notification channel to the host reader(IP 192.168.100.75/Port 1000, then receive the response from the host reader. But before it sends commands to the host reader,it need to start the server at IP Address 192.168.100.1/Port 3000,so that once the commands for notification channel is executed,(my application) the server can receive the tags send by the reader. Ma application can successfully connect to the host reader as client and send the commands and receive the response.It can also create and connect to the server, but The problem is,The server cannot receive any output from the reader client. The SBuffer shows all 0 and SByteCount is -1. I want to continously receive hexadecimal values from the reader. I am attaching a section of my code. Please help.Needed it urgently unit CAENUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DynamicSkinForm, WSocket, WSocketS, StdCtrls, SkinBoxCtrls, ExtCtrls, SkinCtrls, ComCtrls, ToolsUnit, StrUtils, DB, Grids, DBGrids, dbisamtb, BaseGrid, AdvGrid, DBAdvGrid; type TTcpSrvClient = class(TWSocketClient) public RcvdLine : String; ConnectTime : TDateTime; end; TCAENForm = class(TForm) DynamicSkinForm: TspDynamicSkinForm; LogSplitter: TspSkinSplitter; LogGroupBox: TspSkinGroupBox; LogMemo: TspSkinMemo; LogScrollBar: TspSkinScrollBar; TopPanel: TspSkinPanel; TransponderGroupBox: TspSkinGroupBox; TransponderVScrollBar: TspSkinScrollBar; TransponderHScrollBar: TspSkinScrollBar; UniqueGroupBox: TspSkinGroupBox; TagDataSource: TDataSource; UniqueTagsSplitter: TspSkinSplitter; UniqueTagGrid: TDBAdvGrid; TransponderListView: TspSkinListView; CAENClientSocket: TWSocket; procedure FormCreate(Sender: TObject); procedure FormResize(Sender: TObject); procedure TagDataSourceDataChange(Sender: TObject; Field: TField); procedure FormShow(Sender: TObject); procedure FormHide(Sender: TObject); procedure CAENClientSocketSessionConnected(Sender: TObject; ErrCode: Word); procedure CAENClientSocketDataAvailable(Sender: TObject; ErrCode: Word); private { Private declarations } ByteCount: integer; Data: string; TagId: string; TagSetReceived: boolean; IncomingTags: TStringList; SBuffer: array[0..100000]of byte; Buffer: array [0..1023] of byte; CreateNotfTrgCmd: array [0..54] of byte; CreateReadTrgCmd: array [0..53] of byte; CreateNotfChnCmd: array [0..68] of byte; AddSrcNotfChnCmd: array [0..52] of byte; AddNotfTrgNotfChnCmd: array [0..58] of byte; AddReadTrgSrcCmd: array [0..51] of byte; //AddReadPtSrcCmd: array [0..8] of byte; procedure TCPServerClientConnect(Sender: TObject; Client: TWSocketClient; Error: Word); procedure TCPServerClientDataAvailable(Sender: TObject; Error: Word); public { Public declarations } SByteCount: integer; Processing: boolean; TCPServer: TWSocketServer; ServerRunning: boolean; procedure Display(msg: String); procedure StartTCPServer; procedure StopTCPServer; procedure ClearWorkArea; procedure ClearAllData; procedure Connect; procedure Close; procedure SendCommand(command: Pointer; size: integer); procedure Mainloop; procedure ExecuteCommand; end; var CAENForm: TCAENForm; implementation uses MainUnit; {$R *.dfm}
procedure TCAENForm.StartTCPServer; begin TCPServer := TWSocketServer.Create(nil); TCPServer.Addr := '192.168.100.1'; TCPServer.Port := '3000'; TCPServer.Proto := 'tcp'; TCPServer.LineMode := False; //TCPServer.LineMode := True; TCPServer.LineEcho := False; TCPServer.LineEdit := False; TCPServer.ClientClass := TTcpSrvClient; TCPServer.Banner := ''; TCPServer.onfiltered= TCPServerClientConnect; TCPServer.onfiltered= TCPServerClientDataAvailable; TCPServer.Listen; end; procedure TCAENForm.StopTCPServer; begin TCPServer.Close; TCPServer.Free; end; procedure TCAENForm.Display(msg: String); begin LogMemo.Lines.BeginUpdate; try while LogMemo.Lines.Count > 200 do LogMemo.Lines.Delete(0); LogMemo.Lines.Insert(0,Msg); finally LogMemo.Lines.EndUpdate; end; end; procedure TCAENForm.TCPServerClientConnect(Sender: TObject; Client: TWSocketClient; Error: Word); begin with Client as TTcpSrvClient do begin Display(#13#10'Client connected.' + ' Remote: ' + PeerAddr + ':' + PeerPort + ' Local: ' + GetXAddr + ':' + GetXPort); {Display('There is now ' + IntToStr(TWSocketServer(Sender).ClientCount) + ' client(s) connected.');} onfiltered= TCPServerClientDataAvailable; Confiltered= Now; end; end; procedure TCAENForm.TCPServerClientDataAvailable( Sender : TObject; Error : Word); var i: integer; TagVisibleCount: string; TagTimeStamp: TDateTime; TagValid: boolean; s: string; begin IncomingTags.Clear; with Sender as TTcpSrvClient do begin SByteCount := TCPServer.Receive(@SBuffer, SizeOf(SBuffer) - 1); Display('No of TagBytes Received: '+ IntToStr(SByteCount)); for i := 1 to SByteCount do s := s + IntToHex(SBuffer[i],2); Display ( s ); end; end; --------------------------------- Groups are talking. We´re listening. Check out the handy changes to Yahoo! Groups. -- To unsubscribe or change your settings for TWSocket mailing list please goto http://www.elists.org/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be