dio  130
API Documentation
dio_demo.cxx
/*
* DIO demo programm
*/
#include <iostream>
#include "dio/dap.hxx"
namespace Umi=INdepUmi100;
namespace Dino=INdepDino100;
namespace Dev=INdepDev100;
const char *szDev = "/dev/isio/0";
#if defined(MMSYS_linux)
#include <fcntl.h>
#include <unistd.h>
int kbhit()
{
struct timeval tv = { 0L, 0L };
fd_set fds;
FD_ZERO(&fds);
FD_SET(0, &fds);
return select(1, &fds, NULL, NULL, &tv);
}
#else
#include <conio.h>
int kbhit() { return _kbhit(); }
#endif
int main(int argc, char **argv) {
if (1) {
if (argc >= 2) {
szDev=argv[1]; /* use specified device */
}
std::cout << "initializing " << szDev << std::endl;
if (!dio) {
std::cerr << "error initializing " << szDev << ": " << dio << std::endl;
return 2;
}
Umi::RunIo urn;
urn.add(dio.puc());
dio.initDinoUser("dio", &dp);
Dino::BitHandle IA, OA, OB, IB;
OA=pdp->callOpen("dio/O01");
if (OA == Dino::bhNil) goto lErr;
OB=pdp->callOpen("dio/O02");
if (OB == Dino::bhNil) goto lErr;
IB=pdp->callOpen("dio/I02");
if (IB == Dino::bhNil) goto lErr;
IA=pdp->callOpen("dio/I01");
if (IA == Dino::bhNil) {
lErr:
std::cerr << "error: " << *pdp << std::endl;
return 2;
}
pdp->clrBit(OA);
pdp->clrBit(OB);
while (!kbhit()) {
pdp->setBit(OA, !pdp->getBit(OA));
pdp->setBit(OB, !pdp->getBit(OB));
if (pdp->callSync()) goto lErr;
std::cerr << pdp->isBit(IA) << " " << pdp->isBit(IB) << std::endl;
}
}
return 0;
}