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

© MCS Electronics, 1995-2007

TCPWRITE

Action

Write data to a socket.

Syntax

Result = TCPWRITE( socket , var , bytes)

Result = TCPWRITE( socket , EPROM, address , bytes)

Remarks

Result

A word variable that will be assigned with the number of bytes actually

 

written to the socket.

 

When the free transmission buffer is large enough to accept all the data, the

 

result will be the same as BYTES. When there is not enough space, the

 

number of written bytes will be returned.

 

When there is no space, 0 will be returned.

Socket

The socket number you want to send data to(0-3).

Var

A constant string like "test" or a variable.

 

When you send a constant string, the number of bytes to send does not

 

need to be specified.

Bytes

A word variable or numeric constant that specifies how many bytes must be

 

send.

Address

The address of the data stored in the chips internal EEPROM. You need to

 

specify EPROM too in that case.

EPROM

An indication for the compiler so it knows that you will send data from

 

EPROM.

 

 

The TCPwrite function can be used to write data to a socket that is stored in EEPROM or in memory.

When you want to send data from an array, you need to specify the element : var(idx) for example.

See also

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

Example

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

TCPWRITESTR

Action

Sends a string to an open socket connection.

page -691-

© MCS Electronics, 1995-2007

Syntax

Result = TCPWRITESTR( socket , var , param)

Remarks

Result

A word variable that will be assigned with the number of bytes actually

 

written to the socket.

 

When the free transmission buffer is large enough to accept all the data, the

 

result will be the same as BYTES. When there is not enough space, the

 

number of written bytes will be returned.

 

When there is no space, 0 will be returned.

Socket

The socket number you want to send data to (0-3).

Var

The name of a string variable.

Param

A parameter that might be 0 to send only the string or 255, to send the

 

string with an additional CR + LF

 

This option was added because many protocols expect CR + LF after the

 

string.

 

 

The TCPwriteStr function is a special variant of the TCPwrite function. It will use TCPWrite to send the data.

See also

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

Example

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

 

--

SMTP.BAS

'

'

(c) 2002 MCS Electronics

' sample that show how to send an email with SMTP protocol

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

 

--

 

$regfile = "m161def.dat"

' used processor

$crystal = 4000000

' used crystal

$baud = 19200

' baud rate

$lib "tcpip.lbx"

' specify the name

of the tcp ip lib

 

'W3100A constants

' Tcp

Const Sock_stream = $01

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

 

page -692-

© MCS Electronics, 1995-2007

 

'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

Const Debug = -1

' for sending

feeback to the terminal

 

#if Debug

 

Print "Start of SMTP demo"

 

#endif

 

Enable Interrupts

' enable

interrupts

 

'specify MAC, IP, submask and gateway

 

'local port value will be used when you do not specify a port value while creating a connection

'TX and RX are setup to use 4 connections each with a 2KB buffer

Config Tcpip = Int0 , Mac = 00.44.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

'dim the used variables

Dim S As String * 50 , I As Byte , J As Byte , Tempw As Word

#if Debug

Print "setup of W3100A complete"

#endif

'First we need a socket

I = Getsocket(0 , Sock_stream , 5000 , 0) ' ^ socket numer ^ port

#if Debug

Print "Socket : " ; I

'the socket must return the asked socket number. It returns 255 if there was an error

#endif

page -693-

© MCS Electronics, 1995-2007

If I = 0 Then

 

 

' all ok

 

'connect to smtp server

 

' smtp server and

J = Socketconnect(i , 194.09.0. , 25)

SMTP port 25

^socket

 

 

 

'

 

 

 

'

^ ip address of the smtp server

 

 

'

 

^ port 25 for smtp

 

' DO NOT FORGET to ENTER a valid IP number of your ISP smtp server

 

#if Debug

 

 

 

 

Print "Connection : " ; J

 

 

 

Print S_status(1)

 

 

 

#endif

 

 

' all ok

 

If J = 0 Then

 

 

#if Debug

 

 

 

Print "Connected"

 

 

 

#endif

 

 

 

 

Do

 

 

' get status

Tempw = Socketstat(i , 0)

 

Select Case Tempw

 

' connection

Case Sock_established

 

established

Tempw = Tcpread(i , S)

 

' read line

 

 

 

 

 

#if Debug

 

' show info from

smtp server

Print S

 

#endif

 

 

 

 

 

' ok

 

 

If Left(s , 3) = "220" Then

'

send username

Tempw = Tcpwrite(i , "HELO username{013}{010}" )

'

^^^ fill in username there

 

 

#if Debug

bytes written"

' number of bytes

actual send

Print Tempw ; "

#endif

 

 

 

 

 

' get response

 

Tempw = Tcpread(i , S)

 

#if Debug

 

' show response

 

Print S

 

 

#endif

 

' ok

 

 

If Left(s , 3) = "250" Then

 

 

Tempw = Tcpwrite(i , "MAIL

 

 

FROM:<tcpip@test.com>{013}{010}")

' send from address

' get response

 

Tempw = Tcpread(i , S)

 

#if Debug

 

 

 

 

Print S

 

 

 

 

#endif

 

' ok

 

 

If Left(s , 3) = "250" Then

 

 

Tempw = Tcpwrite(i , "RCPT

 

 

TO:<tcpip@test.com>{013}{010}")

' send TO address

' get response

 

Tempw = Tcpread(i , S)

 

#if Debug

 

 

 

 

Print S

 

 

 

 

#endif

 

' ok

 

 

If Left(s , 3) = "250" Then

'

 

Tempw = Tcpwrite(i , "DATA{013}{010}")

speicfy that we are going to send data

' get response

 

Tempw = Tcpread(i , S)

 

#if Debug

 

 

 

 

Print S

 

 

 

 

#endif

 

' ok

 

 

If Left(s , 3) = "354" Then

 

 

Tempw = Tcpwrite(i , "From:

 

 

tcpip@test.com{013}{010}")

 

 

 

Tempw = Tcpwrite(i , "To:

tcpip@test.com{013}{010}")

page -694-