Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BASCOM AVR, help reference (2007).PDF
Скачиваний:
286
Добавлен:
12.08.2013
Размер:
17.02 Mб
Скачать

© MCS Electronics, 1995-2007

Action

Establishes a connection to a TCP/IP server.

Syntax

Result = SOCKETCONNECT(socket, IP, port)

Remarks

Result A byte that is assigned with 0 when the connection succeeded. It will return 1 when an error occurred.

IP

The IP number of the server you want to connect to.

 

This may be a number like 192.168.0.2 or a LONG variable that is assigned with

 

an IP number.

 

Note that the LSB of the LONG, must contain the MSB of the IP number.

Port

The port number of the server you are connecting to.

You can only connect to a server. Standardized servers have dedicated port numbers. For example, the HTTP protocol(web server) uses port 80.

After you have established a connection the server might send data. This depends entirely on the used protocol. Most servers will send some welcome text, this is called a banner.

You can send or receive data once the connection is established.

The server might close the connection after this or you can close the connection yourself. This also depends on the protocol.

See also

CONFIG TCPIP, GETSOCKET , SOCKETSTAT , TCPWRITE, TCPWRITESTR, TCPREAD, CLOSESOCKET , SOCKETLISTEN

Example

'-----------------------------------------------------------------------------

 

------------

: servertest.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: start the easytcp.exe program after the chip is

programmed

and create 2 connections

'

'micro

: Mega161

'suited for demo

: no

'commercial addon needed

: yes

'-----------------------------------------------------------------------------

 

------------

 

$regfile = "m161def.dat"

' specify the used

micro

' used crystal

$crystal = 4000000

frequency

' use baud rate

$baud = 19200

$hwstack = 32

' default use 32

for the hardware stack

' default use 10

$swstack = 10

page -657-

© MCS Electronics, 1995-2007

 

for the SW stack

' default use 40

$framesize = 40

for the frame space

 

Const Sock_stream = $01

' Tcp

Const Sock_dgram = $02

' Udp

Const Sock_ipl_raw = $03

' Ip Layer Raw

Sock

' Mac Layer Raw

Const Sock_macl_raw = $04

Sock

' Confirm Socket

Const Sel_control = 0

Status

' Confirm Tx Free

Const Sel_send = 1

Buffer Size

' Confirm Rx Data

Const Sel_recv = 2

Size

 

'socket status

' Status Of

Const Sock_closed = $00

Connection Closed

' Status Of Arp

Const Sock_arp = $01

Const Sock_listen = $02

' Status Of

Waiting For Tcp Connection Setup

' Status Of

Const Sock_synsent = $03

Setting Up Tcp Connection

' Status Of

Const Sock_synsent_ack = $04

Setting Up Tcp Connection

' Status Of

Const Sock_synrecv = $05

Setting Up Tcp Connection

' Status Of Tcp

Const Sock_established = $06

Connection Established

' Status Of

Const Sock_close_wait = $07

Closing Tcp Connection

' Status Of

Const Sock_last_ack = $08

Closing Tcp Connection

' Status Of

Const Sock_fin_wait1 = $09

Closing Tcp Connection

' Status Of

Const Sock_fin_wait2 = $0a

Closing Tcp Connection

' Status Of

Const Sock_closing = $0b

Closing Tcp Connection

' Status Of

Const Sock_time_wait = $0c

Closing Tcp Connection

' Status Of

Const Sock_reset = $0d

Closing Tcp Connection

' Status Of Socket

Const Sock_init = $0e

Initialization

' Status Of Udp

Const Sock_udp = $0f

Const Sock_raw = $10

' Status of IP RAW

$lib "tcpip.lbx"

' specify the

tcpip library

' display a

Print "Init , set IP to 192.168.0.8"

message

' before we use

Enable Interrupts

config tcpip , we need to enable the interrupts

Config Tcpip = Int0 , Mac = 12.128.12.34.56.78 , Ip = 192.168.0.8 , Submask = 255.255.255.0 , Gateway = 0.0.0.0 , Localport = 1000 , Tx = $55 , Rx = $55

'Use the line below if you have a gate way

'Config Tcpip = Int0 , Mac = 12.128.12.34.56.78 , Ip = 192.168.0.8 , Submask = 255.255.255.0 , Gateway = 192.168.0.1 , Localport = 1000 , Tx = $55 , Rx = $55

page -658-

© MCS Electronics, 1995-2007

 

 

Dim Bclient As Byte

' socket number

 

Dim Idx As Byte

' result

 

Dim Result As Word

 

Dim S As String * 80

 

 

Dim Flags As Byte

 

 

Dim Peer As Long

 

 

Do

 

 

For Idx = 0 To 3

' get status

 

Result = Socketstat(idx , 0)

 

Select Case Result

 

 

Case Sock_established

' if we did not

 

If Flags.idx = 0 Then

 

send a welcome message yet

 

 

Flags.idx = 1

 

'

Result = Tcpwrite(idx , "Hello from W3100A{013}{010}")

send welcome

 

 

End If

' get number of

 

Result = Socketstat(idx , Sel_recv)

 

bytes waiting

 

 

If Result > 0 Then

 

 

Do

 

 

Result = Tcpread(idx , S)

Print "Data from client: " ; Idx ; " " ; S Peer = Getdstip(idx)

Print "Peer IP " ; Ip2str(peer)

'you could analyse the string here and send an appropiate

command

 

 

'only exit is recognized

 

 

If Lcase(s) = "exit" Then

 

 

Closesocket Idx

 

 

Elseif Lcase(s) = "time" Then

 

' you

Result = Tcpwrite(idx , "12:00:00{013}{010}")

should send date$ or time$

 

 

End If

 

 

Loop Until Result = 0

 

 

End If

 

 

Case Sock_close_wait

 

 

Print "close_wait"

 

 

Closesocket Idx

 

 

Case Sock_closed

 

 

Print "closed"

 

' get

Bclient = Getsocket(idx , Sock_stream , 5000 , 0)

socket for server mode, specify port 5000

 

 

Print "Socket " ; Idx ; " " ; Bclient

 

 

Socketlisten Idx

 

 

Print "Result " ; Result

' reset the hello

Flags.idx = 0

message flag

 

 

End Select

Next

Loop

End

SOCKETLISTEN

Action

Opens a socket in server(listen) mode.

page -659-

© MCS Electronics, 1995-2007

Syntax

SOCKETLISTEN socket

Remarks

Socket The socket number you want to close in the range of 0 -3.

The socket will listen to the port you specified with the GetSocket function. You can listen to a maximum of 4 sockets at the same time.

After the connection is closed by either the client or the server, a new connection need to be created and the SocketListen statement must be used again.

See also

CONFIG TCPIP, GETSOCKET , SOCKETCONNECT, SOCKETSTAT , TCPWRITE, TCPWRITESTR, TCPREAD, CLOSESOCKET

Example

See SOCKETCONNECT example

SOCKETSTAT

Action

Returns information of a socket.

Syntax

Result = SOCKETSTAT( socket , mode)

Remarks

Result

A word variable that is assigned with the result.

Socket

The socket number you want to get information of

Mode

A parameter that specified what kind of information you want to retrieve.

 

SEL_CONTROL or 0 : returns the status register value

 

SEL_SEND or 1 : returns the number of bytes that might be placed into the

 

transmission buffer.

 

SEL_RECV or 2 : returns the number of bytes that are stored in the reception

 

buffer.

 

 

The SocketStat function contains actual 3 functions. One to get the status of the connection, one to determine how many bytes you might write to the socket, and one to determine how many bytes you can read from the buffer.

When you specify mode 0, one of the following byte values will be returned:

Value

State

Description

 

 

page -660-