I try add this function to code, but I can not display it.
Please can I some who help me create code. I do not undestand struct_new and etc.
Thaks very much.
Code: Select all
###################################################################################
# GIGCount.tcl #
# #
# - Sets a group of Gigabit cards (slot 1 and 3). #
# #
# - We create an array of counter structures to hold the group counter data, #
# then draw a simple report and fill in the counter data. #
# #
# NOTE: This script works on the following cards: #
# - GX-1405(B) #
# - GX-1420(B) #
# - LAN-6200A #
# - LAN-6201A #
# - LAN-3300A/3310A #
# #
###################################################################################
# If smartlib.tcl is not loaded, attempt to locate it at the default location.
# The actual location is different on different platforms.
if {$tcl_platform(platform) == "windows"} {
set libPath "smartlib.tcl"
} else {
set libPath "../../../../include/smartlib.tcl"
}
# if "smartlib.tcl" is not loaded, try to source it from the default path
if { ! [info exists __SMARTLIB_TCL__] } {
if {[file exists $libPath]} {
source $libPath
} else {
#Enter the location of the "smartlib.tcl" file or enter "Q" or "q" to quit
while {1} {
puts "Could not find the file $libPath."
puts "Enter the path of smartlib.tcl, or q to exit."
gets stdin libPath
if {$libPath == "q" || $libPath == "Q"} {
exit
}
if {[file exists $libPath]} {
source $libPath
break
}
}
}
}
# If chassis is not currently linked prompt for IP and link
if {[ETGetLinkStatus] < 0} {
puts "SmartBits not linked - Enter chassis IP address"
gets stdin ipaddr
set retval [ETSocketLink $ipaddr 16385]
if {$retval < 0 } {
puts "Unable to connect to $ipaddr. Please try again."
exit
}
}
set iHub 0
set iPort 0
set iSlot 0
set iSlot2 2
#LIBCMD HTResetPort $RESET_FULL $iHub $iSlot $iPort
#LIBCMD HTResetPort $RESET_FULL $iHub $iSlot2 $iPort
# Create a group of two cards
LIBCMD HGSetGroup ""
LIBCMD HGAddtoGroup $iHub $iSlot $iPort
LIBCMD HGAddtoGroup $iHub $iSlot2 $iPort
#############################################
# Initialize transmit parameters #
# single stream (no alternate) with no VFDs #
#############################################
LIBCMD HTSetStructure $GIG_STRUC_TX 1 1 1 - 0 $iHub $iSlot $iPort \
-ulGap 9600
LIBCMD HTSetStructure $GIG_STRUC_TX 0 0 0 - 0 $iHub $iSlot2 $iPort \
-ulGap 9600
# LIBCMD HTGetStructure $GIG_STRUC_COUNTER_INFO 0 0 0 \ myGIGCounterInfo \ 0 \ $iHub $iSlot $iPort
# Reset Counters
LIBCMD HGClearPort
# Transmit for four seconds
puts "Sending Packets..."
LIBCMD HGStart
after 4000
LIBCMD HGStop
puts "Done!"
# Pause a second to stabilize counters
after 1000
###############################################################################
# Counters #
# - We create an array of two structures of type HTCountStructure #
# then call HGGetCounters to retireve data from cards. #
# This is the same procedure used for all L2 cards. #
# #
# - We add 1 to $iSlot and $iSlot2 to match the slot number on the chassis #
# #
# - Use format to align count data (10d allows 10 spaces decimal output). #
###############################################################################
struct_new cs HTCountStructure*2
LIBCMD HGGetCounters cs
puts "------------------------------------------------------------"
puts " Vysledky testu"
puts "------------------------------------------------------------"
puts " Card [expr $iSlot + 1] Card [expr $iSlot2 +1]"
puts "------------------------------------------------------------"
puts "Tx Packets [format %10d "$cs(0.TmtPkt)"] | [format %10d "$cs(1.TmtPkt)"]"
puts "Rx Packets [format %10d "$cs(0.RcvPkt)"] | [format %10d "$cs(1.RcvPkt)"]"
puts "Collisions [format %10d "$cs(0.Collision)"] | [format %10d "$cs(1.Collision)"]"
puts "Recvd Trigger [format %10d "$cs(0.RcvTrig)"] | [format %10d "$cs(1.RcvTrig)"]"
puts "CRC Errors [format %10d "$cs(0.CRC)"] | [format %10d "$cs(1.CRC)"]"
# puts "Nmb of [format %10d "$cs(0.RcvPktRate)"] | [format %10d "$cs(1.RcvPktRate)"]"
puts "------------------------------------------------------------"
#Unset the structure
unset cs
puts "UnLinking from the chassis.."
ETUnLink
puts "DONE!"