23,128
社区成员
发帖
与我相关
我的任务
分享
#define print_tty "/dev/ttyS2"
int main(int argc, char **argv)
{
int scan_fd,fd,seri_fd;
char s[32] = {0};
pthread_t thread;
FILE *fp = NULL;
int on = 1;
unsigned long mmap_size, mmap_addr,addr_seri,size_seri;
int mmap_addr_fd = -1;
char *mmap_addr_seri;
//打印机全局变量和共享内存初始化
seri_fd = open(print_tty, O_RDWR);
if(seri_fd < 0)
{
perror("open");
close(mmap_addr_fd);
return (-1);
}
scan_fd = open("/dev/scanner", O_RDWR);
if(scan_fd < 0)
{
perror("open");
close(mmap_addr_fd);
close(seri_fd);
return (-1);
}
fd = open("/proc/memshare/phymem_addr", O_RDONLY);
if(fd < 0)
{
printf("cannot open phymem_addr\n");
close(mmap_addr_fd);
close(seri_fd);
close(scan_fd);
return -1;
}
read(fd, s, sizeof(s));
sscanf(s, "%lx", &addr_seri);
close(fd);
fd = open("/proc/memshare/phymem_size", O_RDONLY);
if(fd < 0)
{
printf("cannot open phymem_size\n");
close(mmap_addr_fd);
close(seri_fd);
close(scan_fd);
return -1;
}
read(fd, s, sizeof(s));
sscanf(s, "%lu", &size_seri);
close(fd);
printf("addr_seri=%lx-------size_seri=%lu\n",addr_seri,size_seri);
mmap_addr_seri = mmap(0, size_seri, PROT_READ, MAP_SHARED, scan_fd, addr_seri);
if((char *)mmap_addr_seri == NULL)
{
printf("no data in sharemem\n");
close(mmap_addr_fd);
close(seri_fd);
close(scan_fd);
return -1;
}
if(mmap_addr_seri == (void *)(-1))
{
perror("mmap error");
}
printf("mmap_addr_seri------------%x\n",mmap_addr_seri);
}