SPI protokolas

SPI sąsaja siunčiama ir gaunama informacija turi atitikti tam tikrą protokolą, kuris realizuotas rpi – Arduino programose. Informacijos užklausėjas (Master) visada yra rpi. Komandos struktūra sudaryta iš Pradžios baito (PB), komandos baito (KB), paketo ilgio (DI),  duomenų sekos (INFORMACIJA) ir kontrolinės sumos (KS) bei liekamojo baito(KB).

PB – CB – DI – INFORMACIJA – KS – KB

PB yra visada vienodas ir yra 0x81 (HEX formatas).

CB aprašo komandos tipą. Šiuo metu naudojam dvi komandas: 0xA8 – analoginių reikšmių nuskaitymas ir 0xA9 – apkrovos kreivės reikšmių siuntimas.

DI sudaro INFORMACIJA baitų sekos skaičių.

KS yra kontrolinė suma apimanti baitus nuo SB iki KS imtinai. Ji turi būti lygi 0xFF.

KB yra ‘kvailas’ baitas (angl. dummy), kuris leidžia priimti gaunamo paketo kontrolinę sumą. Tai yra todėl, kad siunčiamas paketas lydimas gaunamo paketo. T.y siuntimo metu yra gaunama informacija. Kadangi gaunamas paketas yra tokio pat ilgio, tai priimamo paketo kontrolinės sumos baitas gaunamas tuo metu, kai siunčiamo paketo KS baitas jau išėjo, o siuntėjas dar turi išsiųsti kontrolinės sumos baitą

 

 

MySQL’e komanda saugoma HEX formate

 

 

 

Dabar sudarytos dvi komandos

darbas su MySQL ir lentelių struktūra

Mysql lentelių struktūra:

-- MySQL Administrator dump 1.4
-- Server version    5.5.44-0+deb8u1
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

-- Create schema vejojegaines
CREATE DATABASE IF NOT EXISTS vejojegaines;
USE vejojegaines;
-- Definition of table `duomenys`
DROP TABLE IF EXISTS `duomenys`;
CREATE TABLE `duomenys` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`laikas` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`itampa` double(7,2) NOT NULL,
`srove` double(7,2) NOT NULL,
`temperatura` double(7,2) NOT NULL,
`vejas` double(7,2) NOT NULL,
`vejokorekcija` double(7,2) NOT NULL,
`vid` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `Index_2` (`vid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_lithuanian_ci;

-- Definition of table `grupes`
DROP TABLE IF EXISTS `grupes`;
CREATE TABLE `grupes` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`Pavadinimas` varchar(128) CHARACTER SET latin1 NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `FK_grupes_1` FOREIGN KEY (`id`) REFERENCES `jegaine` (`gid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_lithuanian_ci;

DROP TABLE IF EXISTS `komandos`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `komandos` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `komanda` varchar(256) NOT NULL,
  `Atlikta` int(10) unsigned NOT NULL DEFAULT '0',
  `ModData` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=64 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

-- Definition of table `jegaine`
DROP TABLE IF EXISTS `jegaine`;
CREATE TABLE `jegaine` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`Pavadinimas` varchar(128) CHARACTER SET latin1 NOT NULL,
`vid` int(10) unsigned NOT NULL COMMENT 'Vartotojo identifikatorius',
`gid` int(10) unsigned NOT NULL COMMENT 'Grupes identifikatorius',
PRIMARY KEY (`id`),
KEY `Index_2` (`vid`),
KEY `Index_3` (`gid`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_lithuanian_ci;

-- Definition of table `spi`
DROP TABLE IF EXISTS `spi`;
CREATE TABLE `spi` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`A1` smallint(5) unsigned NOT NULL,
`A2` smallint(5) unsigned NOT NULL,
`A3` smallint(5) unsigned NOT NULL,
`A4` smallint(5) unsigned NOT NULL,
`A5` smallint(5) unsigned NOT NULL,
`A6` smallint(5) unsigned NOT NULL,
`TSL` int(10) unsigned NOT NULL,
`TSH` int(10) unsigned NOT NULL,
`Date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_lithuanian_ci;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

Gautas klaidos pranešimas:

got error -1 from storage engine

Išrtyniau /var/lib/mysql/ibdata1 ir ib_logfile0 bei iblogfile1

Perstartavau /etc/init.d/mysql – ok

Aišku visas lenteles teko atstatyti iš backup’o (atstatymo duomenų tekstas aukščiau). MysqlAdmin Backup’o failas yra čia: vj.zip.