git-svn-id: svn://db.shs.com.ru/pip@571 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
2017-12-07 07:03:42 +00:00
parent 1023ccb1d3
commit b7691222b6
2 changed files with 8 additions and 7 deletions

View File

@@ -8,10 +8,11 @@ int main(int argc, char *argv[]) {
cli.addArgument("dev", true);
cli.addArgument("speed", true);
if (!cli.hasArgument("dev")) {
piCout << "no device";
return 0;
}
PIString path = cli.argumentValue("dev");
PISPI spi(path);
PISPI spi(path, 1000000);
if (cli.hasArgument("speed")) spi.setSpeed(cli.argumentValue("speed").toInt());
piCout << "open" << spi.open();
piCout << "write" << spi.write(PIByteArray::fromHex("0000000000000000000000000000000000000000000000000000000000000000"));

View File

@@ -38,14 +38,14 @@ bool PISPI::openDevice() {
#ifndef WINDOWS
int ret = 0;
PRIVATE->fd = ::open(path().dataAscii(), O_RDWR);
if (PRIVATE->fd < 0) return false;
if (PRIVATE->fd < 0) {piCoutObj << "can't open device";return false;}
ret = ioctl(PRIVATE->fd, SPI_IOC_WR_MODE, &spi_mode);
if (ret == -1) return false;
if (ret == -1) {piCoutObj << "can't set spi write mode";return false;}
ret = ioctl(PRIVATE->fd, SPI_IOC_WR_BITS_PER_WORD, &spi_bits);
if (ret == -1) return false;
if (ret == -1) {piCoutObj << "can't set bits per word";return false;}
ret = ioctl(PRIVATE->fd, SPI_IOC_WR_MAX_SPEED_HZ, &spi_speed);
if (ret == -1) return false;
piCout << "SPI open" << path() << "speed:" << spi_speed/1000 << "KHz" << "mode" << spi_mode << "bits" << spi_bits;
if (ret == -1) {piCoutObj << "can't set max write speed hz";return false;}
piCoutObj << "SPI open" << path() << "speed:" << spi_speed/1000 << "KHz" << "mode" << spi_mode << "bits" << spi_bits;
PRIVATE->spi_ioc_tr.delay_usecs = 0;
PRIVATE->spi_ioc_tr.speed_hz = spi_speed;
PRIVATE->spi_ioc_tr.bits_per_word = spi_bits;
@@ -86,7 +86,7 @@ int PISPI::writeDevice(const void * data, int max_size) {
memcpy(tx_buf.data(), data, max_size);
int ret;
ret = ioctl(PRIVATE->fd, SPI_IOC_MESSAGE(1), &PRIVATE->spi_ioc_tr);
if (ret < 1) {piCout << "init can't send spi message" << ret; return -1;}
if (ret < 1) {piCoutObj << "can't send spi message" << ret; return -1;}
recv_buf.append(rx_buf);
return max_size;
}