Измерительное оборудование Осциллографы, мультиметры, анализаторы и другая измерительная техника необходимая каждому разработчику. |
09.03.2010, 23:12
|
|
Частый гость
Регистрация: 07.03.2010
Сообщений: 33
Сказал спасибо: 204
Сказали Спасибо 28 раз(а) в 24 сообщении(ях)
|
Re: Компьютерные приборы с использованием звуковой карты
прибор используется только для визуального наблюдения
|
|
|
|
09.03.2010, 23:54
|
|
Частый гость
Регистрация: 07.03.2010
Сообщений: 33
Сказал спасибо: 204
Сказали Спасибо 28 раз(а) в 24 сообщении(ях)
|
Re: Компьютерные приборы с использованием звуковой карты
[IMG] [/IMG]
|
|
|
|
10.03.2010, 10:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 17.01.2007
Адрес: ХМАО-Югра
Сообщений: 4,340
Сказал спасибо: 539
Сказали Спасибо 1,053 раз(а) в 769 сообщении(ях)
|
Re: Компьютерные приборы с использованием звуковой карты
chernovpit,
Это что за схема?
|
|
|
|
10.03.2010, 13:32
|
|
Прописка
Регистрация: 30.01.2010
Сообщений: 154
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Компьютерные приборы с использованием звуковой карты
Сообщение от eddy
|
Так я Вам уже и написал выше. Я работаю только в Linux, чего и Вам советую: разработка программного обеспечения намного проще, чем в винде. И не нужно искать подпольные "недокументированные системные вызовы".
P.S. Эти две строчки можно просто завернуть в system().
|
Замечательно что так все просто. Прогрессивная общественность ждет от Вас готовую программу, можно и под Линукс
Последний раз редактировалось Servk; 10.03.2010 в 13:34.
Причина: правка опечатки
|
|
|
|
10.03.2010, 14:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Компьютерные приборы с использованием звуковой карты
Пожалуйста. Вот простенькая программка, которой я тестировал звуковые карты на предмет реальной разрядности (в линейном участке характеристики ЦАП) и поддержки постоянки на АЦП. О результатах говорил уже где-то выше, не помню, приводил ли программку, на всякий случай вот она:
Код:
|
#include ‹stdio.h›
#include ‹stdlib.h›
#include ‹unistd.h›
#include ‹sys/types.h›
#include ‹sys/stat.h›
#include ‹fcntl.h›
#include ‹math.h›
#include ‹sys/time.h›
#include ‹error.h›
#include ‹string.h›
#include ‹sys/ioctl.h›
#include ‹sys/soundcard.h›
char* names[] = SOUND_DEVICE_NAMES;
double dtime(){
struct timeval ct;
struct timezone tz;
gettimeofday(&ct, &tz);
return (ct.tv_sec + ct.tv_usec/1e6);
}
void printnames(int mask){
int i;
for (i = 0; i ‹ SOUND_MIXER_NRDEVICES; i++){
if(mask & (1‹‹i))
printf("%s, ", names[i]);
}
printf("\n");
}
int main(int argc, char** argv){
char filename[1024], channel=0;
short bytes, bytes1, cntr, blksize;
double time0, time;
int mask, status, wavfile;
int sampletype, samplesize, speed = 44100, bufsize;
int mixer_dev, rec_dev, i;
int fd = open("/dev/dsp", O_RDWR);
int mix_fd = open("/dev/mixer", O_RDWR);
if (ioctl(mix_fd, SOUND_MIXER_READ_DEVMASK, &mixer_dev) ‹ 0){
perror("Unable to read mixer status");
exit(111);
}
printf("Available devices (%d):", mixer_dev);
printnames(mixer_dev);
if (ioctl(mix_fd, SOUND_MIXER_READ_RECMASK, &rec_dev) ‹ 0){
perror("Unable to read available record sources");
exit(112);
}
if(rec_dev){
printf("Available record sources: ");
printnames(rec_dev);
rec_dev = SOUND_MASK_MIC;
printf("Try to set record device: ");
printnames(rec_dev);
if (ioctl(mix_fd, SOUND_MIXER_WRITE_RECSRC, &rec_dev) ‹ 0){
perror("Unable to set record sources");
exit(113);
}
printf("Set record sources: ");
printnames(rec_dev);
}else printf("No record sources\n");
if (ioctl(mix_fd, SOUND_MIXER_READ_STEREODEVS, &status) ‹ 0){
perror("Unable to read available stereo devices");
exit(114);
}
printf("Available stereo devices: ");
printnames(status);
status = (100‹‹8) | 100; // максимальная громкость на оба канала
printf("Set volumes to max level\n");
for (i = 0; i ‹ SOUND_MIXER_NRDEVICES; i++){
mask = status;
if(mixer_dev & (1 ‹‹ i)){
if (ioctl(mix_fd, MIXER_WRITE(i), &mask) ‹ 0) {
perror("Unable to set volume");
}
else
printf("%s\t\t(%d)\t%d --- %d\n", names[i], i, (mask ›› 8) & 255, mask & 255);
}
}
if (argc ‹ 2) strcpy(filename, "outp.wav");
else strcpy(filename, argv[1]);
if (ioctl(fd, (size_t) SNDCTL_DSP_RESET, 0) ‹ 0){
perror("Unable to reset OSS driver");
exit(1);
}
sampletype = AFMT_S16_LE;
samplesize = 16;
status = ioctl(fd, SNDCTL_DSP_SETFMT, &sampletype);
if (status ‹ 0){
perror("Unable to set the sample size");
exit(3);
}
else printf("Sample size: %d\n", samplesize);
mask = 1; // 1 - стерео, для моно - 0
if (ioctl(fd, SNDCTL_DSP_STEREO, &mask) ‹ 0){
perror("Unable to set stereo/mono");
exit(4);
}
mask = speed;
if (ioctl(fd, SNDCTL_DSP_SPEED, &mask) ‹ 0 || speed != mask) {
if (speed - mask › (mask * .01) || mask - speed › (mask * .01))
speed = mask;
}
printf("Speed: %d\n", speed);
ioctl (fd, SNDCTL_DSP_GETBLKSIZE, &mask);
if (mask ‹ 4 || mask › 65536) {
perror("Invalid audio buffer size");
exit(5);
}
printf("Buffer size: %d\n", mask);
bufsize = mask;
if (ioctl(fd, (size_t) SNDCTL_DSP_SYNC, NULL) ‹ 0) {
perror("Unable to sync dsp");
}
printf("samples\n");
time0 = dtime();
wavfile = open(filename, O_RDWR|O_TRUNC);
blksize = speed / 2;
do{
time = dtime() - time0;
//printf("time: %f\n", time);
for (cntr = 0; cntr ‹ blksize; cntr++) {
read(fd, &bytes, 2);
read(fd, &bytes1, 2);
printf("%d %d \r",bytes, bytes1);
bytes = 0x8000 * cos((time + ((double)cntr)/blksize)* 440 * 2. * M_PI);
bytes1 = 0;
if (channel){
write(fd, &bytes, sizeof(bytes));
write(wavfile, &bytes, sizeof(bytes));
}
write(fd, &bytes1, sizeof(bytes));
write(wavfile, &bytes1, sizeof(bytes));
if (!channel){
write(fd, &bytes, sizeof(bytes));
write(wavfile, &bytes, sizeof(bytes));
}
}
channel = !channel;
ioctl(fd, (size_t) SNDCTL_DSP_SYNC, NULL);
}
while(1);// time ‹ 5);
close(wavfile);
close(fd);
exit(0);
} |
P.S. Если надо разработать что-то специфическое - запросто. В свободное от работы время могу заняться (вот только куплю на выходных звуковую карту с АЦП, поддерживающим измерение постоянного напряжения).
|
|
|
|
10.03.2010, 14:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Компьютерные приборы с использованием звуковой карты
P.P.S. Исходник выкладываю по GPLv3. Пользуйтесь на здоровье, кому надо. Программка сырая, но, как уже говорил, написана была только для тестов.
|
|
|
|
10.03.2010, 16:12
|
|
Прописка
Регистрация: 30.01.2010
Сообщений: 154
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Компьютерные приборы с использованием звуковой карты
Сообщение от eddy
|
Зачем же биосом?
Выключить нужный usb-порт:
Код:
|
echo suspend › /sys/bus/usb/devices/‹нужный usb›/power/level |
включить usb:
Код:
|
echo on › /sys/bus/usb/devices/‹нужный usb›/power/level |
|
Пожалуйста. Вот простенькая программка, которой я тестировал звуковые карты на предмет реальной разрядности (в линейном участке характеристики ЦАП) и поддержки постоянки на АЦП. О результатах говорил уже где-то выше, не помню, приводил ли программку, на всякий случай вот она:
Простите, речь идет о программе для управления USB (первая цитата), а не о ЗК (цитата ниже)
Последний раз редактировалось Servk; 10.03.2010 в 16:15.
Причина: две цитаты
|
|
|
|
10.03.2010, 16:25
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Компьютерные приборы с использованием звуковой карты
Сообщение от Servk
|
Простите, речь идет о программе для управления USB (первая цитата), а не о ЗК (цитата ниже)
|
Этот форум об использовании звуковых карт. Вот я Вам код для работы с ЗК и привел. Никакой разницы нет, как она подключалась, главное, чтобы был модуль ядра для этой ЗК - oss или alsa безразличен интерфейс, они не работают напрямую с железом. Да и ни к чему это.
В код можно вставить, куда нужно, записи для управления питанием (только в этом случае программе нужно будет давать права root).
|
|
|
|
10.03.2010, 16:51
|
|
Прописка
Регистрация: 30.01.2010
Сообщений: 154
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Компьютерные приборы с использованием звуковой карты
Сообщение от eddy
|
Этот форум об использовании звуковых карт. Вот я Вам код для работы с ЗК и привел. Никакой разницы нет, как она подключалась, главное, чтобы был модуль ядра для этой ЗК - oss или alsa безразличен интерфейс, они не работают напрямую с железом. Да и ни к чему это.
В код можно вставить, куда нужно, записи для управления питанием (только в этом случае программе нужно будет давать права root).
|
Все понятно, воз и ныне там.
|
|
|
|
10.03.2010, 17:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Компьютерные приборы с использованием звуковой карты
Сообщение от Servk
|
Все понятно, воз и ныне там.
|
В смысле? Вы опишите конкретно то, что хотите получить. Может быть, у меня даже найдется готовое решение.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:17.
|
|