The sl500_api
package provides a Go-based interface for interacting with the SL500 card reader, allowing applications to communicate with the reader via serial connections. This package includes functions for initializing, configuring, and controlling the SL500, as well as reading and writing data on compatible RFID cards.
- Initialize and manage serial connections with SL500.
- Control the reader's antenna, LED, and buzzer.
- RFID card operations, including reading, writing, and authentication.
- Compatibility with MIFARE and ISO15693 tags.
To include sl500_api
in your project, use:
go get github.com/your_username/sl500_api
To start, create a new connection to the SL500 card reader using the NewConnection
function. Specify the serial port path, baud rate, logging option, and timeout.
package main
import (
"fmt"
"time"
"github.com/ft-t/sl500-api"
)
func main() {
// Initialize SL500 with the appropriate serial port path, baud rate, logging, and timeout
reader, err := sl500_api.NewConnection("/dev/ttyUSB0", sl500_api.Baud.Baud9600, true, 3*time.Second)
if err != nil {
fmt.Println("Error initializing SL500:", err)
return
}
defer reader.Close()
}
Below are some primary commands for controlling the SL500:
-
Open and Close Connection
err := reader.Open() // Opens the serial connection err = reader.Close() // Closes the connection
-
Antenna Control
reader.RfAntennaSta(sl500_api.AntennaOn) // Turn antenna on reader.RfAntennaSta(sl500_api.AntennaOff) // Turn antenna off
-
RFID Card Commands
reader.RfRequest(sl500_api.RequestAll) // Scan for all cards reader.RfAnticoll() // Anti-collision function
-
MIFARE Operations
blockNumber := byte(4) data, _ := reader.RfM1Read(blockNumber) // Read data from block fmt.Printf("Data: %x\n", data) writeData := []byte{0x01, 0x02, 0x03, 0x04} reader.RfM1Write(blockNumber, writeData) // Write data to block
reader.RfInitType(sl500_api.Type_A)
reader.RfBeep(100) // Beep for 100 milliseconds
reader.RfLight(sl500_api.ColorGreen) // Set LED to green
Each function returns an error object; check this for successful execution. Example:
if err := reader.RfAntennaSta(sl500_api.AntennaOn); err != nil {
fmt.Println("Antenna error:", err)
}
This project is licensed under the MIT License. See the LICENSE file for details.
Contributions are welcome! Feel free to submit a pull request or open an issue for feedback or feature requests.