© 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 |
|
© 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
© 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}")
© MCS Electronics, 1995-2007
Tempw = Tcpwrite(i , "Subject: BASCOM SMTP
test{013}{010}")
Tempw = Tcpwrite(i , "X-Mailer: BASCOM
SMTP{013}{010}")
Tempw = Tcpwrite(i , "{013}{010}")
Tempw = Tcpwrite(i , "This is a test email from
BASCOM SMTP{013}{010}") |
|
|
Tempw = Tcpwrite(i , "Add more lines as |
|
needed{013}{010}") |
|
' end |
Tempw = Tcpwrite(i , ".{013}{010}") |
with a single dot |
|
|
Tempw = Tcpread(i , S) |
' get response |
#if Debug |
|
|
Print S |
|
|
#endif |
' ok |
|
If Left(s , 3) = "250" Then |
|
Tempw = Tcpwrite(i , "QUIT{013}{010}") |
|
' quit connection |
|
|
Tempw = Tcpread(i , S) |
|
|
#if Debug |
|
|
Print S |
|
|
#endif |
|
|
End If |
|
|
End If |
|
|
End If |
|
|
End If |
|
|
End If |
|
|
End If |
|
|
Case Sock_close_wait |
|
|
Print "CLOSE_WAIT" |
' close the |
|
Closesocket I |
|
connection |
|
|
Case Sock_closed |
' socket is closed |
Print "Socket CLOSED" |
End |
|
|
End Select |
|
|
Loop |
|
|
End If |
|
|
End If |
'end program |
End |
TANH
Action
Returns the hyperbole of a single
Syntax
var = TANH( source )
Remarks
Var |
A numeric variable that is assigned with hyperbole of variable |
|
source. |
Source |
The single or double variable to get the hyperbole of. |
|
|
All trig functions work with radians. Use deg2rad and rad2deg to convert between radians
page -695-