- •Table of Contents
- •Index
- •Keyword Reference
- •Installation
- •Installation of BASCOM
- •BASCOM IDE
- •Running BASCOM-AVR
- •File New
- •File Close
- •File Save
- •File Save As
- •File Print Preview
- •File Print
- •File Exit
- •View PinOut
- •View PDF viewer
- •View Error Panel
- •Edit Undo
- •Edit Redo
- •Edit Cut
- •Edit Copy
- •Edit Paste
- •Edit Find
- •Edit Find Next
- •Edit Replace
- •Edit Goto
- •Edit Toggle Bookmark
- •Edit Goto Bookmark
- •Edit Indent Block
- •Edit Unindent Block
- •Edit Remark Block
- •Program Compile
- •Program Syntax Check
- •Program Show Result
- •Program Simulate
- •Program Send to Chip
- •Tools Terminal Emulator
- •Tools LCD Designer
- •Tools LIB Manager
- •Tools Graphic Converter
- •Tools Stack Analyzer
- •Tools Plugin Manager
- •Tools Batch Compile
- •Options Compiler
- •Options Compiler Chip
- •Options Compiler Output
- •Options Compiler Communication
- •Options Compiler I2C, SPI, 1WIRE
- •Options Compiler LCD
- •Options Communication
- •Options Environment
- •Options Simulator
- •Options Programmer
- •Supported Programmers
- •ISP programmer
- •PG302 programmer
- •Sample Electronics cable programmer
- •KITSRUS Programmer
- •MCS Universal Interface Programmer
- •STK500 Programmer
- •Lawicel BootLoader
- •AVR ISP Programmer
- •USB-ISP Programmer
- •MCS Bootloader
- •Options Monitor
- •Options Printer
- •Window Cascade
- •Window Tile
- •Window Arrange Icons
- •Window Minimize All
- •Help About
- •Help Index
- •Help MCS Forum
- •Help MCS Shop
- •Help Support
- •Help Knowledge Base
- •Help Credits
- •BASCOM Editor Keys
- •Program Development Order
- •PlugIns
- •Font Editor
- •PinOut
- •BASCOM HARDWARE
- •Additional Hardware
- •AVR Internal Hardware
- •AVR Internal Registers
- •AVR Internal Hardware TIMER0
- •AVR Internal Hardware TIMER1
- •AVR Internal Hardware Watchdog timer
- •AVR Internal Hardware Port B
- •AVR Internal Hardware Port D
- •Adding XRAM
- •Attaching an LCD Display
- •Memory usage
- •Using the 1 WIRE protocol
- •Using the SPI protocol
- •Power Up
- •Chips
- •ATtiny22
- •ATtiny13
- •ATtiny15
- •ATtiny25
- •ATtiny45
- •ATtiny85
- •ATtiny26
- •ATtiny2313
- •ATMEGA8
- •ATMEGA16
- •ATMEGA32
- •ATMEGA48
- •ATMEGA88
- •ATMEGA168
- •ATMEGA64
- •ATMEGA103
- •ATMEGA128
- •ATMEGA161
- •ATMEGA162
- •ATMEGA163
- •ATMEGA165
- •ATMEGA169
- •ATMEGA323
- •ATMEGA603
- •ATMEGA8515
- •ATMEGA8535
- •BASCOM Language Fundamentals
- •Changes compared to BASCOM-8051
- •Language Fundamentals
- •Mixing ASM and BASIC
- •Assembler mnemonics
- •Reserved Words
- •Error Codes
- •Newbie problems
- •Tips and tricks
- •ASCII chart
- •BASCOM Language Reference
- •$BAUD
- •$BAUD1
- •$BOOT
- •$CRYSTAL
- •$DATA
- •$DEFAULT
- •$EEPLEAVE
- •$EEPROM
- •$EEPROMHEX
- •$EXTERNAL
- •$FRAMESIZE
- •$HWSTACK
- •$INCLUDE
- •$INITMICRO
- •$LCDPUTCTRL
- •$LCDPUTDATA
- •$LCDRS
- •$LCDVFO
- •$LOADER
- •$LOADERSIZE
- •$NOCOMP
- •$NOINIT
- •$NORAMCLEAR
- •$PROG
- •$PROGRAMMER
- •$REGFILE
- •$ROMSTART
- •$SERIALINPUT
- •$SERIALINPUT1
- •$SERIALINPUT2LCD
- •$SERIALOUTPUT
- •$SERIALOUTPUT1
- •$SWSTACK
- •$TIMEOUT
- •$TINY
- •$WAITSTATE
- •$XRAMSIZE
- •$XRAMSTART
- •1WIRECOUNT
- •1WRESET
- •1WREAD
- •1WSEARCHFIRST
- •1WSEARCHNEXT
- •1WVERIFY
- •1WWRITE
- •ACOS
- •ALIAS
- •ASIN
- •BASE64DEC
- •BASE64ENC
- •BAUD
- •BAUD1
- •BINVAL
- •BIN2GRAY
- •BITWAIT
- •BITS
- •BLOAD
- •BSAVE
- •BUFSPACE
- •BYVAL
- •CALL
- •CHECKSUM
- •CIRCLE
- •CLEAR
- •CLOCKDIVISION
- •CLOSE
- •CLOSESOCKET
- •CONFIG
- •CONFIG 1WIRE
- •CONFIG ACI
- •CONFIG ADC
- •CONFIG ATEMU
- •CONFIG BCCARD
- •CONFIG CLOCK
- •CONFIG CLOCKDIV
- •CONFIG COM1
- •CONFIG COM2
- •CONFIG COMx
- •CONFIG DATE
- •CONFIG DCF77
- •CONFIG DEBOUNCE
- •CONFIG I2CDELAY
- •CONFIG I2CSLAVE
- •CONFIG INPUT
- •CONFIG INTx
- •CONFIG GRAPHLCD
- •CONFIG KBD
- •CONFIG KEYBOARD
- •CONFIG LCD
- •CONFIG LCDBUS
- •CONFIG LCDMODE
- •CONFIG LCDPIN
- •CONFIG PORT
- •CONFIG PRINT
- •CONFIG PRINTBIN
- •CONFIG PS2EMU
- •CONFIG RC5
- •CONFIG SDA
- •CONFIG SCL
- •CONFIG SERIALIN
- •CONFIG SERIALIN1
- •CONFIG SERIALOUT
- •CONFIG SERIALOUT1
- •CONFIG SINGLE
- •CONFIG SPI
- •CONFIG SERVOS
- •CONFIG TCPIP
- •CONFIG TIMER0
- •CONFIG TIMER1
- •CONFIG TIMER2
- •CONFIG TWI
- •CONFIG TWISLAVE
- •CONFIG WAITSUART
- •CONFIG WATCHDOG
- •CONFIG X10
- •CONFIG XRAM
- •CONST
- •COSH
- •COUNTER0 and COUNTER1
- •CPEEK
- •CPEEKH
- •CRYSTAL
- •CURSOR
- •DATA
- •DAYOFWEEK
- •DAYOFYEAR
- •DATE$
- •DATE
- •DEBUG
- •DEBOUNCE
- •DECR
- •DECLARE FUNCTION
- •DECLARE SUB
- •DEFxxx
- •DEFLCDCHAR
- •DELAY
- •DISABLE
- •DISKFREE
- •DISKSIZE
- •DISPLAY
- •DO-LOOP
- •DriveCheck
- •DriveGetIdentity
- •DriveInit
- •DriveReset
- •DriveReadSector
- •DriveWriteSector
- •DTMFOUT
- •ECHO
- •ELSE
- •ENABLE
- •ENCODER
- •EXIT
- •FILEATTR
- •FILEDATE
- •FILEDATETIME
- •FILELEN
- •FILETIME
- •FLUSH
- •FORMAT
- •FOR-NEXT
- •FOURTHLINE
- •FRAC
- •FREEFILE
- •FUSING
- •GETADC
- •GETATKBD
- •GETATKBDRAW
- •GETDSTIP
- •GETDSTPORT
- •GETKBD
- •GETRC
- •GETRC5
- •GETTCPREGS
- •GETSOCKET
- •GLCDCMD
- •GLCDDATA
- •GOSUB
- •GOTO
- •GRAY2BIN
- •HEXVAL
- •HIGH
- •HIGHW
- •HOME
- •I2CINIT
- •I2CRECEIVE
- •I2CSEND
- •I2START,I2CSTOP, I2CRBYTE, I2CWBYTE
- •IDLE
- •IF-THEN-ELSE-END IF
- •INCR
- •INITFILESYSTEM
- •INITLCD
- •INKEY
- •INPUTBIN
- •INPUTHEX
- •INPUT
- •INSTR
- •ISCHARWAITING
- •KILL
- •LCASE
- •LCDAT
- •LCDCONTRAST
- •LEFT
- •LINE
- •LINE INPUT
- •LTRIM
- •LOAD
- •LOADADR
- •LOADLABEL
- •LOADWORDADR
- •LOCAL
- •LOCATE
- •LOOKDOWN
- •LOOKUP
- •LOOKUPSTR
- •LOWERLINE
- •MAKEBCD
- •MAKEINT
- •MAKEDEC
- •MAKETCP
- •MEMCOPY
- •NBITS
- •ON INTERRUPT
- •ON VALUE
- •OPEN
- •PEEK
- •POKE
- •POPALL
- •POWER
- •POWERDOWN
- •POWERSAVE
- •PRINTBIN
- •PSET
- •PS2MOUSEXY
- •PULSEIN
- •PULSEOUT
- •PUSHALL
- •RC5SEND
- •RC5SENDEXT
- •RC6SEND
- •READ
- •READEEPROM
- •READMAGCARD
- •RESET
- •RESTORE
- •RETURN
- •RIGHT
- •ROTATE
- •ROUND
- •RTRIM
- •SECELAPSED
- •SECOFDAY
- •SEEK
- •SELECT-CASE-END SELECT
- •SETFONT
- •SETTCP
- •SETTCPREGS
- •SENDSCAN
- •SENDSCANKBD
- •SERIN
- •SEROUT
- •SETIPPROTOCOL
- •SHIFT
- •SHIFTCURSOR
- •SHIFTIN
- •SHIFTOUT
- •SHIFTLCD
- •SHOWPIC
- •SHOWPICE
- •SINH
- •SOCKETCONNECT
- •SOCKETLISTEN
- •SOCKETSTAT
- •SONYSEND
- •SOUND
- •SPACE
- •SPIIN
- •SPIINIT
- •SPIMOVE
- •SPIOUT
- •SPLIT
- •START
- •STCHECK
- •STOP
- •STRING
- •SYSSEC
- •SYSSECELAPSED
- •SYSDAY
- •SWAP
- •TCPCHECKSUM
- •TCPREAD
- •TCPWRITE
- •TCPWRITESTR
- •TANH
- •THIRDLINE
- •TIME$
- •TIME
- •TOGGLE
- •TRIM
- •UCASE
- •UDPREAD
- •UDPWRITE
- •UDPWRITESTR
- •UPPERLINE
- •VARPTR
- •VERSION
- •WAIT
- •WAITKEY
- •WAITMS
- •WAITUS
- •WHILE-WEND
- •WRITE
- •WRITEEEPROM
- •X10DETECT
- •X10SEND
- •#IF ELSE ENDIF
- •International Resellers
- •International Resellers
- •ASM Libraries
- •EXTENDED I2C
- •MCSBYTE
- •MCSBYTEINT
- •TCPIP
- •LCD4BUSY
- •GLCD
- •GLCDSED
- •LCD-EPSON
- •AVR-DOS File System
- •CF Card
- •Compact FlashCard Driver
- •Elektor CF-Interface
- •XRAM CF-Interface for simulation
- •New CF-Card Drivers
- •Floating Point
- •FP_TRIG
- •DOUBLE
- •I2C SLAVE
- •I2CSLAVE
- •I2C TWI Slave
- •SPISLAVE
- •DATE TIME
- •EUROTIMEDATE
- •DATETIME
- •PS2-AT Mouse and Keyboard Emulation
- •AT_EMULATOR
- •PS2MOUSE_EMULATOR
- •BCCARD
- •BCCARD
- •BCDEF
- •BCCALL
- •BCRESET
- •Tools
- •LCD RGB-8 Converter
© 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-